Шешімі: Вывод рекурсивной функции
Ниже на пяти языках программирования записана рекурсивная функция (процедура) F. Функция сначала выводит значение n, затем, если n >= 3, вызывает F(n - 1), а после этого — F(n - 3). Что выведет программа при вызове F(5)?
Шешім по шагам
5 қадамВызов $F(5)$ сначала выводит цифру 5, затем вызывает $F(4)$ и $F(2)$.
$$F(5) \to 5, F(4), F(2)$$Раскрываем вызов $F(4)$: выводится 4, затем выполняются $F(3)$ и $F(1)$.
$$F(4) \to 4, F(3), F(1)$$Вызов $F(3)$ выводит 3, затем выполняет $F(2)$ и $F(0)$. Вызовы с аргументами 2, 1 и 0 только выводят значение.
$$F(3) \to 3, 2, 0$$Последовательность вывода для $F(4)$ равна 43201, а затем после завершения $F(4)$ вызывается $F(2)$ из исходного вызова.
$$F(4) \to 43201$$Объединяем все значения в порядке выполнения вызовов.
$$5 + 43201 + 2 = 5432012$$Где здесь ошибаются
Меняют местами вызовы F(n - 1) и F(n - 3).
Не выводят значения при n < 3.
Пытаются записать только конечные значения рекурсивных вызовов, не учитывая первоначальный вывод n.