Шешімі: Вывод рекурсивной функции
Ниже на пяти языках программирования записан рекурсивный алгоритм F. Запишите подряд без пробелов и разделителей все числа, которые будут выведены на экран при выполнении вызова F(7). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.
1def F(n): 2 if n > 2: 3 F(n // 2) 4 F(n - 1) 5 print(n)
Шешімін қадамдап көрсету
6 қадамПри n \le 2 функция сразу завершается, поэтому значения 1 и 2 не выводятся.
Вызов F(3) сначала выполняет F(1) и F(2), затем выводит 3.
Вызов F(4) выполняет F(2), затем F(3), которая выводит 3, после чего выводит 4.
Вызов F(5) выполняет F(2), затем F(4), поэтому выводит 3, 4, 5.
Вызов F(6) выполняет F(3), затем F(5), поэтому выводит 3, 3, 4, 5, 6.
Вызов F(7) сначала выполняет F(3), затем F(6), а после этого выводит 7.
Где здесь ошибаются
Выводят число до выполнения рекурсивных вызовов.
Учитывают значения 1 и 2, хотя условие n > 2 для них ложно.
Меняют порядок вызовов F(n // 2) и F(n - 1).