Предмет: Информатика, автор: voznas4421

Надо объяснить принцип работы этого кода словами. Это PascalABC


var n,i: integer;

function fact(n: integer): integer;

begin

if n = 1 then

fact:= 1

else

fact:=fact(n-1)*n;

end;

begin

for i:= 1 to 9 do

if i mod 2 = 1 then

writeln(fact(i));

end.

Ответы

Автор ответа: angryfukse
0

Принцип работы программы заключается в вычислении факториала нечётных чисел на отрезке [1, 9].

Функция fact принимает один параметр - целое число n.

На выходе данная функция возвращает факториал n.

Рассмотрим работу функции:

Если n = 1, то функция без лишних вычислений возвращает 1, т.к факториал числа 1 = 1.

Иначе, если же параметр n не был равен 1, то мы умножаем n на рекурсивно вызываемую функцию fact, но уже от n - 1.

Т.е, если вызвать fact от числа 3, то произойдет следующее:

1) n = 3. n не равен 1, значит fact:=3 * fact(3 - 1); Факториал мы сейчас этот вычислить не можем, т.к не знаем, чему равен факториал от (n - 1), т.е fact(2)

2) Вызвали рекурсивно fact от n - 1, т.е fact(2); n = 2. n не равен 1, значит fact:=fact(2 - 1) * 2. Факториал мы сейчас этот вычислить не можем, т.к НА ЭТОМ ШАГЕ не знаем, чему равен факториал от (n - 1), т.е fact(1)

3) Вызвали рекурсивно fact от n - 1, т.е fact(1). n = 1, n == 1, значит fact:=1; И вот тут мы уже можем вычислять все факториалы из прошлых шагов.

Получаем:

2.1) fact(2) = 2 * fact(1) = 2 * 1 = 2;

1.1) fact(3) = 3 * fact(2) = 3 * 2 = 6.

Функция возвращает нам fact(n) и выходит из рекурсии.

Основная программа:

Пускаем цикл от 1 до 9 и если  i  у нас нечётное число, то печатаем факториал от i.

На выходе будет напечатано:

  • 1  - fact(1), т.к 1 - нечетное число
  • 6 - fact(3), т.к 3 - нечетное число
  • 120  - fact(5), т.к 5 - нечетное число
  • 5040  - fact(7), т.к 7 - нечетное число
  • 362880  - fact(9), т.к 9 - нечетное число

Приложения:
Похожие вопросы
Предмет: Қазақ тiлi, автор: vusrus353535
Предмет: Другие предметы, автор: dkw7901