
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); } } } }

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); } } } }


Похожие вопросы
- Задайте значения M и N. Напишите программу, которая найдёт сумму натуральных элементов в промежутке от M до N.,
- Стоит ли дальше учить C#?
- Нужно, чтобы когда закрывалось консольное приложение на C# происходило какое-то действие!
- Программирование на C Sharp (C#)
- Сегодня начал учить c#, решил сделать калькулятор простой и столкнулся с такой ошибкой при компиляции, хелпуйте.
- Что лучше C# или C++?
- Зачем разбивать код в C# на отдельные классы?
- [c#] как найти все простые делители числа, ответ в массиве int
- Помогите пожалуйста. Написать на C#
- Python, C, C++, C#, Что выбрать-то?