Решение: Рекурсивный вывод чисел
Ниже на пяти языках программирования записан рекурсивный алгоритм F. Запишите подряд без пробелов и разделителей все числа, которые будут выведены на экран при выполнении вызова F(8). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.
1def F(n): 2 print(n, end='') 3 if n >= 6: 4 F(n - 1) 5 F(n - 3)
Решение по шагам
4 шагаФункция сначала выводит значение аргумента, а затем при $n \geq 6$ вызывает себя для $n-1$ и $n-3$.
$$F(n)=n,F(n-1),F(n-3)\quad\text{при }n\geq 6$$Разбираем вызов $F(6)$: сначала выводится 6, затем выполняются $F(5)$ и $F(3)$.
$$F(6)=653$$Разбираем вызов $F(7)$: выводится 7, затем результат $F(6)$ и результат $F(4)$.
$$F(7)=7\,653\,4=76534$$Разбираем вызов $F(8)$: выводится 8, затем результат $F(7)$ и результат $F(5)$.
$$F(8)=8\,76534\,5=8765345$$Где здесь ошибаются
Меняют порядок рекурсивных вызовов $F(n-1)$ и $F(n-3)$.
Не учитывают вывод числа до выполнения рекурсивных вызовов.
Продолжают рекурсию для значений $n<6$.