跟踪递归链表?

2024-04-25 12:23:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我举个简单的例子:

def find2_rec(head, o):
    '''(LLNode, obj) -> LLNode
    '''
    if head == None:
        result = (None, None)
    elif head.data == o:
        result = (head, None)
    else:
        (at_node, before_node) = find2_rec(head.next, o)
        if head.next == at_node != None:
            before_node = head
        result = (at_node, before_node)
    return result

假设您得到了LLNode,它只是数据和下一个。此函数仅返回对象与其前一个对象(例如一个

a = [1] -> [2] -> [3] -> [4] -> [5]

查找2\u rec(a,3)—>

([3] -> [4] -> [5], [2] -> [3] -> [4] -> [5])

是输出。我的问题是如何追踪这个?你知道吗

我习惯了正常的递归,我喜欢这样写:

(列表的基本递归和示例)

rsum([1,2,3])
    rsum([2,3])
        rsum([3])
            return 3 
        return 5 # 3 + 2
   return 6 # 1 + 5

现在,对我来说,最合适的方法是什么?你知道吗

我正在寻找的示例:

a = [1] -> [2] -> [3] -> [4] -> [5]

让我们再说一次,对于find2\u rec(a,3),我将把它作为

[1] -> [2] -> [3] -> [4] -> [5]
       [2] -> [3] -> [4] -> [5]
              [3] -> [4] -> [5]
                  return [3] -> [4] -> [5], None
           return ([3] -> [4] -> [5], [2] -> [3] -> [4] -> [5])
    return ([3] -> [4] -> [5], [2] -> [3] -> [4] -> [5])

这么小的东西写得太多了。有更好的办法吗?你知道吗


Tags: 对象nonenode示例returnifresulthead