“Дана последовательность целых чисел (вводится с клавиатуры), заканчивающаяся числом 0. Выведите эту последовательность в обратном порядке. При решении этой задачи нельзя пользоваться массивами и прочими динамическими структурами данных.Рекурсия вам поможет.”
Мое решение:
def reverse(l): if len(l) > 1: print(l[len(l)-1]) del l[len(l)-1] return reverse(l) else: return l[0] def ss(n): if n != 0: l.append(n) return ss(int(input())) elif n == 0 and len(l) == 0: return n elif n == 0 and len(l) != 0: l.append(n) return reverse(l) l = [] print(ss(int(input())))
Проблема:
Да, я использовал динамическую структуру. Но, мне кажется, что структура алгоритма, с помощью которого поставленную задачу возможно решить, не может не содержать динамических структур. Принцип таков: для каждого нового значения необходимо место в памяти. Количество значений заранее не предопределено. Вопрос: как в такой ситуации, можно решить задачу без динамических структур? Кстати, рылся в интернете, так и не нашел толком, что такое ч точки зрения Python динамические и (не динамические) статические структуры данных. Проверил решение на тестах сайта Питон для начинающих (не помню точно адрес), все 5 возможных тестов проходит. В принципе для меня главное решить задачу в общем, а не изощряться с типами применяемых данных. Но на Курсере есть какой-то 6 тест, который мой алгоритм не проходит. Что он проверяет я не знаю. Может, в моем алгоритме есть ошибки? На малых числах все работает исправно.