我知道有更简单的方法来创建一个函数,它可以给出数字列表中最大的数字,但我想使用递归。当我把这个功能称为最伟大的时候,我什么都没有。例如最大([1,3,2])没有给我。如果列表中只有两个元素,我会得到正确的答案,所以我知道问题必须与调用它自己的函数有关。不知道为什么。通过传递一个列表在Python中递归调用一个函数
def compare(a,b):
if a==b:
return a
if a > b:
return a
if a < b:
return b
def greatest(x):
if len(x)==0:
return 0
i=0
new_list=[]
while i< len(x):
if len(x)-i>1:
c=compare(x[i],x[i+1])
else:
c=x[i]
new_list.append(c)
i=i+2
if len(new_list)>1:
greatest(new_list)
else:
return new_list[0]
print greatest([1,3,2])
看看[如何格式化我的代码块?](http://meta.stackexchange.com/q/22186)以备日后发布。 – 2012-08-10 18:05:39
谢谢。关于这个问题的任何想法? – 2012-08-10 18:08:53
这看起来......过于复杂。 'compare'可以用内置的'max'替换,并且递归解决方案不应该循环遍历列表 - 只需要比较'x [0]'和'最大(x [1:])'。 – Izkata 2012-08-10 18:12:21