我举个简单的例子:
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])
这么小的东西写得太多了。有更好的办法吗?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐