РУҚА
16

Шешімі: Рекурсивный вывод чисел

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

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

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

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

4 қадам
1

При вызове $F(7)$ сначала выполняется $F(5)$, затем $F(2)$, после чего выводится $7$.

$$F(7) \to F(5) \to F(3) \to F(1),\ F(1),\ 3,\ F(1),\ 5,\ F(2),\ 7$$
2

Вызов $F(1)$ не выполняет дальнейших положительных рекурсивных вызовов и выводит $1$. Поэтому вызов $F(3)$ выводит $113$.

$$F(3) \to 1,1,3$$
3

Вызов $F(5)$ выводит последовательность $11315$, а вызов $F(2)$ сначала не выводит ничего при $F(0)$, затем выводит $2$.

$$F(5) \to 11315,\quad F(2) \to 2$$

Объединяем результаты вызова $F(7)$ и записываем числа подряд без разделителей.

$$1\ 1\ 3\ 1\ 5\ 2\ 7 \to 1131527$$
Жауап
1131527
1131527
так ответ выглядит в бланке

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

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

Пропускают повторные вызовы $F(1)$.

Записывают пробелы или разделители между выведенными числами.

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

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

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

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