假设我有以下内容:
def foo(lst):
current = 0
if(len(lst) == 0):
return current
first = bar(lst[0])
rest = foo(lst[1:])
if(first > current):
current = first
return current
if __name__ == "__main__":
lst1 = [2,4,6]
lst2 = [0,2,5,6,12]
lst3 = []
lst4 = [1]
lst5 = [2]
full_lst = [lst1, lst2, lst3, lst4, lst5]
print(foo(full_lst))
此函数将上述结构中的嵌套列表作为参数。该函数的目标是递归地遍历此嵌套列表结构,并将计算应用于每个列表。该功能还可以跟踪每次计算,并最终返回从这些计算中获得的最大这些值。
我相信我已经完成一些基本结构,但是我看不到如何在较小的子列表上使用函数调用,并将从该函数获得的值与从上一个函数调用获得的值进行比较。
谢谢。
答案 0 :(得分:0)
bar = len
def foo(lst):
if lst:
last = lst.pop()
return max(foo(lst), bar(last))
else:
return float('-inf')
if __name__ == "__main__":
lst1 = [2,4,6]
lst2 = [0,2,5,6,12]
lst3 = []
lst4 = [1]
lst5 = [2]
full_lst = [lst1, lst2, lst3, lst4, lst5]
print(foo([]), foo(full_lst))
# prints '-inf 5'
答案 1 :(得分:0)
递归很有趣。专注于这两件事:
如果答案很简单,请返回!
递归在哪里结束? 通常有一些基础,例如“如果该值输入,则该值输出。”
如果答案不简单:
因此,实际上只是要确定循环的结束位置以及如何划分/组合这些部分。
在示例中,您有终点,但没有使用“其余”。