Сумма ряда с факториалом

Задача

Вычислить сумму ряда

    5
s = ∑ (-1) * i * (x / i!)
   i=1

Значение x вводится с клавиатуры.

Пояснение к задаче и алгоритм решения

В данном случае надо найти сумму ряда произведений:
s = (-1) * 1 * (x / 1!) + (-1) * 2 * (x / 2!) + (-1) * 3 * (3 / i!) + (-1) * 4 * (x / 4!) + (-1) * 5 * (x / 5!)

Так как i меняется от 1 до 5, то каждый элемент ряда можно находить в цикле, после этого добавлять к сумме.

Поскольку элемент ряда содержит факториал, то его придется вычислять отдельно для каждого значения i. Это вычисление можно вынести в отдельную функцию.

Таким образом, алгоритм решения задачи сводится к следующему:

  1. Ввести значение x.
  2. Присвоить s 0.
  3. В цикле для i от 1 до 5
    1. получать факториал i,
    2. вычислять значение выражения (-1) * i * (x / i!),
    3. суммировать полученное значение со значением s.
  4. Вывести значение s на экран.

Факториал также вычисляется в цикле. Сначала в переменную записывается 1, затем значение этой переменной в цикле умножается на числа от 2 до i. (В программе ниже - до n, т.к. i используется как счетчик.)

Исходный код на языке программирования Pascal

var
    s: real;
    x: integer;
    i: byte;
    j: longint;
 
function factorial(n: byte): longint;
    var i: byte;
    begin
        factorial := 1;
        for i:=2 to n do
            factorial := factorial * i;
    end;
 
begin
    readln(x);
    s := 0;
    for i:=1 to 5 do begin
        j := factorial(i);
        s := s + ((-1) * i) * (x / j);
    end;
    writeln(s:5:3);
end.

Пример(ы) выполнения программы на языке Pascal

-3
8.125

Исходный код на языке программирования C

#include <stdio.h>
int factorial(short n);
 
main() {
    float s, x;
    short i;
    int j;
    scanf("%f", &x);
    s = 0;
    for (i=1; i <= 5; i++) {
        j = factorial(i);
        s += (-1 * i) * (x / j);
    }
    printf("%.3f\n", s);
}
 
int factorial(short n) {
    short i;
    int f;
    f = 1;
    for (i=2; i<=n; i++)
        f *= i;
    return f;
}

Пример(ы) выполнения программы на языке C

10
-27.083

Исходный код на языке программирования Python

def factorial(n):
    f = 1
    for i in range(2,n+1):
        f *= i
    return f
 
x = int(input())
s = 0
for i in range(1,6):
    j = factorial(i)
    s += (-1 * i) * (x / j)
print("%.3f" % s)

Пример(ы) выполнения программы на языке Python

2
-5.417

Исходный код на языке программирования КуМир

алг
нач
  вещ s, x
  цел i, j
  ввод x
  s := 0
  нц для i от 1 до 5
    j := факториал(i)
    s := s + ((-1) * i) * (x / j)
  кц
  вывод s:5:3
кон
 
алг цел факториал(цел a)
нач
  цел i
  знач := 1
  нц для i от 2 до a
    знач := знач * i
  кц
кон

Пример(ы) выполнения программы на языке КуМир

-0.5
1.354

Исходный код на языке программирования Basic

input x
s = 0
for i=1 to 5
        gosub factorial
        s = s + (-1 * i) * (x / j)
next i
decimal 3
print s
end
 
factorial:
        j = 1
        for n=1 to i
                j = j * n
        next n
return

Пример(ы) выполнения программы на языке Basic

-2
5.417

Тема

Функции

Уровень сложности

Средний

Дата публикации