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

Procedure F(n: integer); begin write(n); if n >= 4 then begin F(n div 3); F(n — 1) end end; Запишите…

Автор:
Предмет: Информатика
Уровень: 5 - 9 класс

procedure F(n: integer);

begin

write(n);

if n >= 4 then begin

F(n div 3);

F(n — 1)

end

end;

Запишите подряд без пробелов и разделителей все числа, которые будут напечатаны на экране при выполнении вызова F(6). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.

Ответов к вопросу: 1
  • korsunpavel99
    20.10.2024 | 18:59

    Ответ:
    6251413
    Объяснение:
    Поскольку функция рекурсивно вызывает себя и при каждом вызове выводит переданное число, удобно будет записать выводимые числа в столбик, обозначая глубину стека (количество рекурсивных вызовов) и произойдет ли вызов. Очередная пара рекуррентных вызовов происходит при передаче числа больше или равного четырём.
    0: F(6) -> 6 (вызов произойдёт)
    1: F(2) -> 2 (вызов не произойдёт)
    1: F(5) -> 5 (вызов произойдёт)
    2: F(1) -> 1 (вызов произойдёт)
    2: F(4) -> 4 (вызов произойдёт)
    3: F(1) -> 1 (вызов не произойдёт)
    3: F(3) -> 3 (вызов не произойдёт)

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