Разворот последовательности
Вы решили задачу. Теперь можно сравнить подходы.
Печатаем число после рекурсивной обработки остатка.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Один элемент на вызов
Стек сохраняет прочитанные числа; возвраты идут в обратном порядке. Ноль тоже печатается.
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) стек.
На что обратить внимание
- Ноль входит в вывод. Глубина рекурсии ограничивает оба варианта; массивы не используются.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.