Я самообучающийся Python, используя как думать, как компьютерный ученый. Я изучаю «Узлы и связанные списки». Эта рекурсивная функция меня путает. Чтобы быть ясным, код работает нормально. Я спрашиваю, как возможно, что выполняется заключительная строка кода внизу (print list,
)?Рекурсивная функция, окончательная заявка на печать
Мой вопрос относительно этой рекурсивной функции:
def print_backward (list):
if list == None: return #shouldn't the code terminate when this is satisfied?
print_backward(list.next)
print list, #seems like the function would terminate before this line
#ever gets called
Может кто-нибудь объяснить мне, когда эта последняя строка print head,
выполняется? Читая этот код, я бы подумал, что после вычисления каждого узла мы вернемся к вершине функции, а затем, когда мы дойдем до третьего и последнего узлов, завершающий оператор if list == None: return
будет удовлетворен, и тогда код выйдет из цикла, никогда достигая утверждения печати в самом низу. Ясно, что этого не происходит, поскольку вызывается оператор печати.
Я спрашиваю, потому что я чувствую, что не знаю, не понимаю, как работает код! Если кто-то может объяснить, как код попадает в этот окончательный оператор печати (и он туда добирается), я бы очень признателен. Надеюсь, я не нарушу правила, спросив об этом. Благодаря!
BTW Я печатаю связанный, список, груз [1,2,3]. Распечатайте его назад, поэтому [3,2,1] Ниже приведен код для большего контекста.
class Node:
def __init__(self, cargo = None, next = None):
self.cargo = cargo
self.next = next
def __str__(self):
return str(self.cargo)
def print_list(node):
while node:
print node,
node = node.next
print
def print_backward (list):
if list == None: return
print_backward(list.next)
print list,
node1 = Node(1)
node2 = Node(2)
node3 = Node(3)
node1.next = node2
node2.next = node3
node3.next = None
print_backward(node1)
Выход:
==== RESTART: /Users/Desktop/Programming Career/Untitled.py ====
3 2 1
Вы путаете пустой список '[]' и 'None'. – DyZ