Решение: Рекурсивный алгоритм F
Ниже записан рекурсивный алгоритм $F$. Запишите подряд без пробелов и разделителей все числа, которые будут выведены на экран при выполнении вызова $F(7)$. Числа должны быть записаны в том же порядке, в котором они выводятся на экран.
1def F(n): 2 if n > 0: 3 print(n) 4 F(n - 3) 5 F(n // 2)
Решение по шагам
4 шагаВызов $F(7)$ выводит число $7$, затем последовательно вызывает $F(4)$ и $F(3)$.
$$F(7) \to 7,\ F(4),\ F(3)$$Вызов $F(4)$ выводит $4$. Вызов $F(1)$ выводит $1$, а затем вызов $F(2)$ выводит $2$ и после вызова $F(-1)$ вызывает $F(1)$, который выводит $1$.
$$F(4) \to 4,1,2,1$$Вызов $F(3)$ выводит $3$, затем выполняет $F(0)$, который ничего не выводит, и $F(1)$, который выводит $1$.
$$F(3) \to 3,1$$Объединяем числа в порядке их вывода и убираем разделители.
$$7,4,1,2,1,3,1 \to 7412131$$Где здесь ошибаются
Выполняют второй рекурсивный вызов до полного завершения первого.
Учитывают вывод для вызовов с неположительным аргументом.
Записывают разделители между выведенными числами.