РУҚА
16

Шешімі: Реті рекурсивных вызовов

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

Ниже на пяти языках программирования записан рекурсивный алгоритм F. При вызове F(n), если n > 2, сначала выводится значение n, затем вызываются F(n / 2) с целочисленным делением и F(n − 1).

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

Шешім по шагам

4 қадам
1

При вызове F(7) выводится число 7. Затем выполняется F(7 // 2) = F(3).

$$7$$
2

Вызов F(3) выводит 3, а вызовы F(1) и F(2) ничего не выводят, поскольку их аргументы не больше 2.

$$7\,3$$
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$$
Жауап
7363543
7363543
так ответ выглядит в бланке

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

Перепутать порядок рекурсивных вызовов F(n // 2) и F(n − 1).

Продолжать рекурсию для n ≤ 2.

Разделять числа пробелами или другими символами.

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

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

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

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