收益率值不会以递归方式返回

时间:2018-01-27 10:14:19

标签: python recursion

我试图编写一个迭代器,它以相反的方式从链接列表返回数据,从最后一个节点到头节点。

但由于某种原因,我们只返回了第一个值,即第一个递归级别的值。

============= code ===========

class Node:

    def __init__(self ,data ,next=None):

        self.data = data
        self.next = next

def foo(head):

    if head.next is None:
        yield head.data
    else:
        foo(head.next)
        yield head.data

=============================

head = Node('A',Node("B", Node("C")))

for x in foo(head):

    print(x)

========结果==========

========应该是========

一个 乙 ç

1 个答案:

答案 0 :(得分:1)

以下方法用于打印转发节点列表和反向节点列表。

Node类:

>>> class Node:
...     def __init__(self, data=None, next=None):
...             self.data = data
...             self.next  = next
...     def __str__(self):
...             return str(self.data)

包含多个节点的列表

>>> node1 = Node('A')
>>> node2 = Node('B')
>>> node3 = Node('C')

链接节点,第一个节点引用第二个节点,第二个节点引用第三个节点,第三个节点引用无

>>> node1.next = node2
>>> node2.next = node3

打印转发列表

>>> def print_list(node):
...     while node:
...             print(node),
...             node = node.next
...     print
...
>>> print_list(node1)
A
B
C

打印后退列表

>>> def print_backward(list):
...     if list == None: return
...     head = list
...     tail = list.next
...     print_backward(tail)
...     print(head),
...
>>> print_backward(node1)
C
B
A

有关详细信息please refer