Задача Задача №3515331
А
А
Прикольно, давай разберёмся вместе.
- Что требует задача
- Читаем код F(n): сначала печатается n, затем если n >= 2 выполняются три рекурсивных вызова подряд: F(n-2), F(n-1), F(n-2).
- Нужно записать подряд без пробелов все числа, которые выведутся при вызове F(3), в этом же порядке.
- Как решить правильным способом
- Разберём вызов F(3) пошагово:
- F(3): печать 3
- затем F(1)
- F(1): печать 1
- F(1) завершено
- затем F(2)
- F(2): печать 2
- затем F(0)
- F(0): печать 0
- F(0) завершено
- затем F(1)
- F(1): печать 1
- F(1) завершено
- затем F(0)
- F(0): печать 0
- F(0) завершено
- затем снова F(1)
- F(1): печать 1
- F(1) завершено
- Соединяем вывод: 3, 1, 2, 0, 1, 0, 1 → 3120101.
Итого правильный ответ: 3120101.
- Сравнение с твоим ответом
- Твой ответ: 31
- Правильный ответ: 3120101
- Ты пропустил большую часть выводов. Причина: при F(3) после F(1) должен последовать вызов F(2) и затем ещё один F(1), то есть вывод идёт по всей рекурсивной ветке, а не только первые два числа.
- Как правильно думать в таких задачах
- Всегда записывай вывод в момент печати (до любых рекурсивных вызовов).
- Пройдись по дереву вызовов слева направо: для каждого узла выписывай n, затем разворачивай три дочерних вызова по порядку F(n-2), F(n-1), F(n-2).
- Если хочется проверить быстро, можно нарисовать дерево вызовов и пометить, какие числа печатаются на каждом узле.
- Мой вывод
- Правильный вывод для F(3): 3120101.
- Твой ответ (31) неполон и потому неверен.
Хочешь ещё разобрать похожую задачу или попрактиковаться на другом примере?
Пожалуйста, оцени мой ответ лайком или дизлайком.