C#

Есть кто разбирается в C# или в ПаскальABC? нужно найти сумму ряда

Дано натуральное число N. Вычислить сумму ряда.
На C#. Это быстросходящаяся сумма произведений, поэтому при N≥6 при работе с числами типа double выдаёт одно и то же число:
using System;
namespace New_Project {
public static class Program {
public static double f(UInt32 n) {
return n == 0? 1.0 : n * f(n - 1); }
public static void Main() {
UInt32 i, j, N; double p, S; for (;;) {
S = 0.0; Console.Write("N: ");
N = Convert.ToUInt32(Console.ReadLine());
for (i = 1; i <= N; i++) { p = 1.0;
for (j = 1; j <= i; j++) p *= f(j) / f(i);
S += p; } Console.WriteLine(S); } } } }
Для уточнения расчёта можно воспользоваться более точным типом decimal, слегка переписав программу. Сходимость к одной и той же итоговой сумме тогда будет при N≥8:
using System;
namespace New_Project {
public static class Program {
public static decimal f(UInt32 n) {
return n == 0? 1M : n * f(n - 1); }
public static void Main() {
UInt32 i, j, N; decimal p, S; for (;;) {
S = 0M; Console.Write("N: ");
N = Convert.ToUInt32(Console.ReadLine());
for (i = 1; i <= N; i++) { p = 1M;
for (j = 1; j <= i; j++) p *= f(j) / f(i);
S += p; } Console.WriteLine(S); } } } }
Андрей Михеев
Андрей Михеев
66 572
Лучший ответ