Rekursiver Code gibt kontinuierlich „Keine“ zurück
Angesichts des folgenden rekursiven Codeausschnitts:
<code class="python">def isIn(char, aStr): ms = len(aStr)/2 if aStr[ms] == char: print('i am here now') return True elif char > aStr[ms] and not ms == len(aStr)-1: aStr = aStr[ms+1:] elif char < aStr[ms] and not ms == 0: aStr = aStr[0:ms] else: return False isIn(char, aStr) print(isIn('a', 'ab'))</code>
Es kann zu unerwartetem Verhalten kommen Dabei gibt der Code None anstelle des erwarteten True-Werts zurück. Dieses Problem entsteht, weil dem letzten rekursiven Aufruf innerhalb des else-Blocks eine explizite Return-Anweisung fehlt.
Der korrigierte Code sollte den folgenden Zusatz enthalten:
<code class="python">else: return isIn(char, aStr)</code>
In diesem Szenario, wenn die Funktion rekursiv ist , weist es den Rückgabewert des rekursiven Aufrufs der Funktion selbst zu. Wenn der rekursive Aufruf das Zeichen nicht findet, gibt er False zurück, was die Funktion dann als ihren eigenen Wert zurückgibt.
Ohne die explizite Return-Anweisung beim letzten rekursiven Aufruf würde die Funktion das Ende ohne Angabe erreichen Rückgabewert. Infolgedessen würde es implizit None zurückgeben, weshalb der ursprüngliche Code weiterhin None zurückgab.
Das obige ist der detaillierte Inhalt vonWarum gibt mein rekursiver Code ständig „Keine' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!