Не работает цикл с факториалом - C#
Формулировка задачи:
В общем, есть задача с формулой и факториалом в ней. Программа работала исправно, когда дополнительно стоял цикл вычисления факториала внутри цикла вычисления суммы n членов. Когда я ее предоставил преподу, он меня заставил переписать задачу так, чтобы "Факториал не высчитывался для каждого нового члена, а постоянно был в памяти уже готовый".
И тут у меня появляется проблема. В решении с двумя циклами считалось всё правильно. Теперь правильно высчитывается только при n = 1, а если n больше 1, то программа выдает неправильные
целые
числа. Sum брал как 0, так и 0.0 - ничего не изменялось. В строчке вывода {2} и {3} стоят лишь в отладочных целях - они подтверждают, что факториал вычисляется неправильно. Пожалуйста, укажите ошибку или дайте совет.
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Cycle7
- {
- class Program
- {
- static void Main(string[] args)
- {/*7. Дано натуральное n. Вычислить значение выражения -2/1! + 3/2! + (-1)^n*(n+1)/n!*/
- int n = 0, i = 1, sign = -1;
- double Sum = 0.0, temp = 0;
- long fact = 1L;
- Console.WriteLine("Вас приветствует программа, вычисляющая сумму элементов последовательности с\nn-ным членом, равным (-1)^n*(n+1)/n!.");
- Console.WriteLine("Введите n:");
- n = int.Parse(Console.ReadLine());
- for (i = 1; i <= n; i++, sign = -sign)
- {
- temp = (i + 1) / fact;
- Sum += sign * temp;
- fact *= i;
- }
- Console.WriteLine("Сумма {0} членов равна {1} {2} {3}", n, Sum, fact, i);
- Console.ReadLine();
- }
- }
- }
Решение задачи: «Не работает цикл с факториалом»
textual
Листинг программы
- temp = (i + 1) / (double)fact;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д