Ошибка постоянно выходит. Подскажите пожалуйста в чем проблема
Задайте значения 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;
}
}
C#
Задайте значения M и N. Напишите программу, которая найдёт сумму натуральных элементов в промежутке от M до N.,
Я бы лучше сделала и с циклом и по формуле Σ(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
Александр Левченко
Это код так сжался при копировании, или это стиль такой?
Математической формулой считай: 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.
```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.
Похожие вопросы
- Учитывая целое число n (n>2), напишите метод, который возвращает простые числа из диапазона [2, n].
- C#. Написать программу для нахождения периметра и площади треугольника. СТороны вводить с клавиатуры
- Помогите написать программу C#
- Написать программу для выполнения расчета требуемого количества операторов call-центра
- Счетчик нажатия кнопки Enter. Написал программу, но не работает. Winforms C#
- Есть кто разбирается в C# или в ПаскальABC? нужно найти сумму ряда
- Помогите написать программу с массивом на C#
- Написать программу на C# вычисления стоимости покупки с учетом скидки.
- Помогите написать программу на C# По задачнику PascalABC Case20
- Написать программу на С#