我知道有更簡單的方法來創建一個函數,它可以給出數字列表中最大的數字,但我想使用遞歸。當我把這個功能稱爲最偉大的時候,我什麼都沒有。例如最大([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