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

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

    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.



-3
8.125

Язык Си


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



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)



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-256


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



-2
5.417

Оцените статью
Добавить комментарий