C#

Задайте значения M и N. Напишите программу, которая найдёт сумму натуральных элементов в промежутке от M до N.,

Ошибка постоянно выходит. Подскажите пожалуйста в чем проблема
Задайте значения M и N. Напишите программу, которая найдёт сумму натуральных элементов в промежутке от M до N.
M = 1; N = 15 -> 120
M = 4; N = 8. -> 30
*/

Console.Write("Введите число M: 1 ");
int m = Convert.ToInt32(Console.ReadLine());

Console.Write("Введите число N: 15 ");
int n = Convert.ToInt32(Console.ReadLine());

SumFromMToN(m, n);

// вызов функции "сумма чисел от M до N"
void SumFromMToN(int m, int n)
{
Console.Write(SumMN(m - 1, n));
}

// функция сумма чисел от M до N
int SumMN(int m, int n)
{
int res = m;
if (m == n)
return 0;
else
{
m++;
res = m + SumMN(m, n);
return res;
}
}
Я бы лучше сделала и с циклом и по формуле Σ(i=M;N)i=½•(N•(N+1)-M•(M-1)), где M≤N и M, N - натуральные числа:
 using System; 
class New_Project
{
public void Main()
{
uint i, M, N;
ulong s, S, t;
while (true)
{
s = 0;
Console.Write("M N: ");
var line = Console.ReadLine().Split(" ");
M = uint.Parse(line[0]);
N = uint.Parse(line[1]);
t = N + 1;
t *= N;
S = t;
t = M - 1;
t *= M;
S = (S - t) / 2;
for (i = M; i
Ikromdjon Kurbanov
Ikromdjon Kurbanov
66 572
Лучший ответ
Александр Левченко Это код так сжался при копировании, или это стиль такой?
Математической формулой считай: S = (M+N)*(N-M+1)/2
Рекурсией в данной ситуации считать неоправданно.
Приведенный код содержит несколько ошибок. Вот исправленный вариант:

```csharp
using System;

class Program
{
static void Main()
{
Console.Write("Введите число M: ");
int m = Convert.ToInt32(Console.ReadLine());

Console.Write("Введите число N: ");
int n = Convert.ToInt32(Console.ReadLine());

int sum = SumFromMToN(m, n);
Console.WriteLine("Сумма натуральных элементов от M до N: " + sum);
}

static int SumFromMToN(int m, int n)
{
if (m > n)
{
throw new ArgumentException("Значение M должно быть меньше или равно N");
}

if (m == n)
{
return m;
}
else
{
return m + SumFromMToN(m + 1, n);
}
}
}
```

Внесены следующие изменения:

1. Удалены лишние значения в методах `Console.Write`, чтобы получать значения M и N от пользователя.
2. Добавлено сообщение о сумме натуральных элементов в методе `Main`.
3. Добавлена проверка на то, что M должно быть меньше или равно N. Если это условие не выполняется, выбрасывается исключение `ArgumentException`.
4. В методе `SumFromMToN` увеличение значения `m` перед рекурсивным вызовом функции заменено на `m + 1`, чтобы избежать ошибки бесконечной рекурсии.
5. Добавлено базовое условие, чтобы при достижении M равного N функция вернула значение M.

Теперь программа должна работать правильно и вычислять сумму натуральных чисел в промежутке от M до N.