2017-05-18 25 views
2

はここ 再帰的なコードにこのコードを変更する方法

def search(myList, number): 
    for i in myList: 
     if i[0] == number: 
      return i[1] 
    return None 

myList = [(5107261, 'Ernst'), (6524256, 'Arvo')] 

number = 5107261 

print(search(myList, number)) 

は、今私は、再帰を使用して、それを書きたい私のpythonのコードですが、私はそれを行うかどうかはわかりません。私は始めるためにいくつかの指針が必要です。

答えて

3

再帰コードを書くときは、基本ケースを定義し、すべてのステップで問題を小さくする方法を定義したいとします。この例ではリストを扱っているので、良い基本ケースは空のリスト[]です。リストが空の場合は、Noneを返すのが理にかなっています。再帰的なケースでは、問題を小さくするためにいくつかの作業をしたいと思っています。この場合、1つの要素をチェックすることができます。その要素が検索対象でない場合、リストの小さい方のバージョンで関数を再度呼び出すことができます。

私たちの結果は、このような関数である:3例があります

def searchR(myList, number): 
    if length(myList) == 0: return None 
    elif myList[0][0] == number: return myList[0][1] 
    else: return searchR(myList[1:], number) 

。ケース1は、リストの長さが0であるベースケースです。ケース2は成功のケースであり、ここで検索のターゲットが見つかりました。ケース3は、再帰呼び出しを行う場所です。最初の要素が新しいリストからどのように削除されているかに注目してください。最初の要素が削除されない場合、関数は永遠にループします。

+0

ありがとうございます。あなたの答えは私のために非常に教育..... –

+0

私は助けることができてうれしい! – fileyfood500

+0

@JanekLass答えがあなたを満たしている場合は、それを受け入れたものとしてマークする必要があります。 –

関連する問題