nextupprevious
 

Next:4.3.2 Вычисление числа е
Up:4.3 Программы вычисления элемента последовательности
Previous:4.3 Программы вычисления элемента последовательности


4.3.1 Вычисление факториала

Задача. Вычислить факториал $L!$ заданного натурального числа $L$.

Решение. Рассмотрим последовательность целых чисел $F_0, F_1,$$F_2,$$\ldots,$$F_L$,
удовлетворяющую следующим соотношениям:

(1) $F_0 = 1$,
(2) $F_M = F_{M-1}\cdot M$ для всех $М$ из диапазона от 1 до $L$.

Нетрудно видеть, что $F_L = F_{L-1}\cdot L = F_{L-2}\cdot (L-1) \cdot L =\ldots = L!$.

Будем строить программу решения так, чтобы при ее выполнении в переменной $F$ последовательно появлялись значения $F_0,F_1,\ldots,F_L$.

Таким образом получаем простую схему решения задачи (см. программу Факториал), состоящую из трех последовательных шагов:

1) строим начальное состояние памяти (в переменных $M,F,L$), в котором $F$ равно числу 1, M - числу 0,  а $L$ -- заданному натуральному числу;

2) до тех пор, пока не превысит $L$, изменяем текущее состояние памяти, увеличивая М на единицу и перевычисляя $F$ так, чтобы сохранялось равенство $F = M!$;

3) после этого печатаем текущее значение переменной $F$.

module Факториал;
    var F,M,L : integer;
begin
    F := 1; M := 0; read(L);
    (* $\{F = M!, M = L, M = 0\}$ *)
    while M # L do
        (* $\{F = M!, M<L, M>=0\}$*)
        M := M+1; F := F$*$M
    end;
    (*$\{F = L!\}$*)
    write(L, '!=', F)
end Факториал.
 

Next:4.3.2 Вычисление числа е
Up:4.3 Программы вычисления элемента последовательности
Previous:4.3 Программы вычисления элемента последовательности



© В.Н. Касьянов, Е.В.Касьянова, 2004