Решение: Порядок рекурсивных вызовов
Ниже на пяти языках программирования записан рекурсивный алгоритм F. При вызове F(n), если n > 2, сначала выводится значение n, затем вызываются F(n / 2) с целочисленным делением и F(n − 1).
1def F(n): 2 if n > 2: 3 print(n) 4 F(n // 2) 5 F(n - 1)
Решение по шагам
4 шагаПри вызове F(7) выводится число 7. Затем выполняется F(7 // 2) = F(3).
$$7$$Вызов F(3) выводит 3, а вызовы F(1) и F(2) ничего не выводят, поскольку их аргументы не больше 2.
$$7\,3$$После завершения F(3) выполняется F(6). Он выводит 6, затем вызывает F(3), который выводит 3.
$$7\,3\,6\,3$$Далее выполняется F(5): выводится 5. После него выполняется F(4), выводится 4, затем F(3), выводится 3.
$$7\,3\,6\,3\,5\,4\,3$$Где здесь ошибаются
Перепутать порядок рекурсивных вызовов F(n // 2) и F(n − 1).
Продолжать рекурсию для n ≤ 2.
Разделять числа пробелами или другими символами.