Разворот последовательности
Печатаем число после рекурсивной обработки остатка.
Как к ней подойти
Потренируйтесь выделять повторяющуюся логику в функцию и находить условие остановки рекурсии.
Функция получает аргументы и возвращает результат через return. Рекурсия разбивает задачу на меньшую такую же задачу; без базового случая вызовы не остановятся. Проверьте, что каждый шаг действительно приближает к нему.
Стек сохраняет прочитанные числа; возвраты идут в обратном порядке. Ноль тоже печатается.
Проверьте перед запуском
- Ноль входит в вывод. Глубина рекурсии ограничивает оба варианта; массивы не используются.
Сравните свой подход
Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.
Ваше принятое решение
Рекомендуемое решение: Один элемент на вызов
Стек сохраняет прочитанные числа; возвраты идут в обратном порядке. Ноль тоже печатается.
def reverse():
x = int(input())
if x != 0:
reverse()
print(x)
reverse()
Время: O(n). Память: O(n) стек.
Другой способ: Два элемента на вызов
Каждый вызов хранит до двух чисел в отдельных переменных. Сначала выводим продолжение, затем второе и первое; глубина примерно вдвое меньше.
def reverse():
first = int(input())
if first == 0:
print(0)
return
second = int(input())
if second == 0:
print(0)
else:
reverse()
if second != 0:
print(second)
print(first)
reverse()
Время: O(n). Память: O(n) стек.