РУҚА
16

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

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

Ниже на пяти языках программирования записан рекурсивный алгоритм $F$. При $n > 0$ алгоритм сначала выводит значение $n$, затем вызывает $F(n - 4)$, а после этого — $F(\lfloor n/2 \rfloor)$. Запишите подряд без пробелов и разделителей все числа, которые будут напечатаны на экране при выполнении вызова $F(8)$. Числа должны быть записаны в том же порядке, в котором они выводятся на экран.

Тапсырманы ашып, өзіңіз шешіңіз
Дальше ответЕгер әлі шешіп жатсаңыз – кеңестерден бастаңыз: олар жауапқа жетелейді, бірақ оны ашпайды.
К подсказкам

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

4 қадам
1

При вызове $F(8)$ сначала выводится число $8$. Затем выполняются вызовы $F(4)$ и $F(4)$.

$$F(8) \to 8,\ F(4),\ F(4)$$
2

Первый вызов $F(4)$ выводит $4$, затем вызывает $F(0)$ и $F(2)$. Вызов $F(0)$ ничего не выводит, а $F(2)$ выводит $2$, после чего вызывает $F(-2)$ и $F(1)$.

3

Вызов $F(1)$ выводит $1$, а его дальнейшие вызовы имеют неположительные аргументы и ничего не выводят. Поэтому один вызов $F(4)$ даёт последовательность $421$.

Второй вызов $F(4)$ даёт такую же последовательность $421$.

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

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

Забывают, что после завершения первого рекурсивного вызова выполняется второй.

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

Учитывают вызовы с неположительными аргументами, хотя условие вывода — $n > 0$.

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

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

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

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