解释在数组中查找max元素的递归函数

时间:2017-05-11 19:05:32

标签: recursion

我决定将递归合并到我的代码中,为此我想要使用它进行训练。我有一个递归函数,它在给定数组中找到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 。我的错误在哪里?是否有正确扩展递归的方法,从而帮助您了解其流程?

enter image description here

1 个答案:

答案 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]的追踪。