我决定将递归合并到我的代码中,为此我想要使用它进行训练。我有一个递归函数,它在给定数组中找到max元素。
def maxx(lst):
if len(lst) == 1:
return lst[0]
else:
m = maxx(lst[1:])
return m if m > lst[0] else lst[0]
maxx([1,3,2])
> 3
我试图绘制一系列事件,但我无法理解上述代码的工作原理? 因为根据我的看法,它应该 2 而不是 3 。我的错误在哪里?是否有正确扩展递归的方法,从而帮助您了解其流程?
答案 0 :(得分:1)
深度0:
lst = [1,3,2]
m = maxx([3,2])
深度1:
lst = [3,2]
m = maxx([2])
深度2:
lst = [2]
returning 2
回到深度1:
lst = [3,2]
m = 2
return m (2) if m > lst[0] (3) else return lst[0] (3)
returning 3
回到深度0:
lst = [1,3,2]
m = 3
return m (3) if m > lst[0] (1) else return lst[0] (1)
returning 3
Alfabravo的回复是正确的,我认为当你回到树上时,你就失去了对lst [0]的追踪。