Блог для маленьких школьников и их родителей
ШколаЛа
14
Сентябрь

Надо объяснить принцип работы этого кода словами. Это PascalABC var n,i: integer; function fact(n: integer):…

Автор: danya8617
Предмет: Информатика
Уровень: студенческий

Надо объяснить принцип работы этого кода словами. Это 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.

Ответов к вопросу: 1
  • dmitrokoseluk
    14.09.2024 | 20:49

    Принцип работы программы заключается в вычислении факториала нечётных чисел на отрезке [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 — нечетное число

Ответить на вопрос:
:p :-p 8) 8-) :lol: =( :( :-( :8 ;) ;-) :(( :o:
Нажимая на кнопку я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.

Ищете решение задачи по Надо объяснить принцип работы этого кода словами. Это 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.? Узнайте, как решить задачу для школьников студенческий, и читайте обсуждения на тему Информатика. Ответы уже доступны. Задавайте свои вопросы и становитесь частью нашего сообщества экспертов!