• procedure F(n: integer);
    begin
    write(n);
    if n >= 4 then begin
    F(n div 3);
    F(n - 1)
    end
    end;

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

Ответы 1

  • Ответ:

    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 (вызов не произойдёт)

    • Автор:

      noemi2rxg
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years