2017-05-11 10 views
1

私は再帰を自分のコードに組み込み、それを使って訓練したいと思った。私は、指定された配列内の最大要素を見つける再帰関数を持っています。配列内の最大要素を見つけるための再帰関数を説明する

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 

私は一連のイベントを描画しようとしましたが、なぜ上記のコードが機能するのかわかりません。 私が見ていることによると、ではないです。私のミスはどこですか?再帰を正しく展開し、その流れを理解するのに役立つメソッドがありますか?

enter image description here

+0

各再帰で配列の内容をチェックしてください。最後の戻り値から2を取り戻すと、それは 'array [0]'と比較されます。これは3であるので3を返します。そして再び配列に入り、array [0]は1です。 P.S.それは、あなたがコードを2つの最大値を探して捨てると期待していることを読むのは混乱しています:) – Alfabravo

答えて

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:Alfabravoによって応答が正しいです

lst = [1,3,2] 
m = 3 
return m (3) if m > lst[0] (1) else return lst[0] (1) 
returning 3 

、私はあなたが戻って木上がったとして[0] LSTのトラックを失ったところそれはだと思います。

関連する問題