数値のリストで最大の数値を与える関数を作成する簡単な方法があることは知っていますが、再帰を使用したかったのです。関数を最大に呼び出すと、何も得られません。たとえば、 maximum([1,3,2]) では何も得られません。リストに要素が 2 つしかない場合、正しい答えが得られるので、問題は関数自体の呼び出しにあるに違いないことがわかります。理由はわかりませんが。
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])