2017-05-18 2 views
2

Hier ist mein Python-CodeWie dieser Code zu ändern, um rekursive Code

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)) 

Jetzt mag ich es mit Rekursion schreiben, aber ich bin nicht sicher, wie es geht. Ich brauche ein paar Hinweise, um mir zu helfen.

Antwort

3

Wenn Sie rekursiven Code schreiben, möchten Sie einen Basisfall definieren, und Sie möchten eine Methode definieren, um Ihr Problem bei jedem Schritt zu verringern. In diesem Beispiel arbeiten wir mit Listen. Ein guter Basisfall wäre also eine leere Liste []. Wenn die Liste leer ist, ist es sinnvoll, None zurückzugeben. In Ihrem rekursiven Fall möchten Sie etwas arbeiten, um das Problem zu verringern. In diesem Fall können wir ein Element überprüfen, und wenn dieses Element nicht das ist, wonach wir suchen, können wir die Funktion für eine kleinere Version der Liste erneut aufrufen.

Unser Ergebnis ist eine Funktion wie folgt aus:

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) 

Es gibt drei Fälle. Fall 1 ist unser Basisfall, wobei die Länge der Liste 0 ist. Fall 2 ist unser Erfolgsfall, bei dem wir das Ziel der Suche gefunden haben. In Fall 3 machen wir unseren rekursiven Aufruf. Beachten Sie, wie das erste Element aus der neuen Liste entfernt wird! Wenn das erste Element nicht entfernt wird, wird die Funktion für immer wiederholt.

+0

Vielen Dank. Ihre Antwort ist sehr lehrreich für mich ..... –

+0

froh, dass ich helfen kann! – fileyfood500

+0

@ JanekLass Wenn die Antwort Sie zufriedenstellt, sollten Sie sie als akzeptiert markieren. –