РУҚА
16

Шешімі: Вывод рекурсивной функции

ЕГЭ · Информатика · Тапсырма 16 · Бағдарламалау негіздері
КүрделіФИПИE6C892Қысқа жауап≈ 3 минутТалдау 6 қадамЖауап сверен с ключом
Условие

Ниже на пяти языках программирования записан рекурсивный алгоритм F. Запишите подряд без пробелов и разделителей все числа, которые будут выведены на экран при выполнении вызова F(7). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.

Python
1def F(n):
2    if n > 2:
3        F(n // 2)
4        F(n - 1)
5        print(n)
Тапсырманы ашып, өзіңіз шешіңіз
Дальше ответЕгер әлі шешіп жатсаңыз – кеңестерден бастаңыз: олар жауапқа жетелейді, бірақ оны ашпайды.
К подсказкам

Шешімін қадамдап көрсету

6 қадам
1

При n \le 2 функция сразу завершается, поэтому значения 1 и 2 не выводятся.

2

Вызов F(3) сначала выполняет F(1) и F(2), затем выводит 3.

3

Вызов F(4) выполняет F(2), затем F(3), которая выводит 3, после чего выводит 4.

4

Вызов F(5) выполняет F(2), затем F(4), поэтому выводит 3, 4, 5.

5

Вызов F(6) выполняет F(3), затем F(5), поэтому выводит 3, 3, 4, 5, 6.

Вызов F(7) сначала выполняет F(3), затем F(6), а после этого выводит 7.

Жауап
3334567
3334567
так ответ выглядит в бланке

Где здесь ошибаются

Выводят число до выполнения рекурсивных вызовов.

Учитывают значения 1 и 2, хотя условие n > 2 для них ложно.

Меняют порядок вызовов F(n // 2) и F(n - 1).

Закрепить приёмВ теме «Бағдарламалау негіздері» ещё 159 тапсырма — жауабымен және дәл осындай талдауымен.
Жаттығу

Тапсырманы қалай шешу керек 16 ЕГЭ, информатика

Бұл есептің талдауы келесіге бөлінген: 6 шагов: видно, откуда берётся каждое число и где теряется балл. Жауап есептеулердің жанында келтірілген, олардың орнына емес.

Задача из темы «Бағдарламалау негіздері»: в ней 160 задач, и у каждой есть такой же разбор. Тіркеу қажет емес.