Heim  >  Artikel  >  Backend-Entwicklung  >  Warum gibt mein rekursiver Code ständig „Keine“ zurück?

Warum gibt mein rekursiver Code ständig „Keine“ zurück?

Barbara Streisand
Barbara StreisandOriginal
2024-10-27 01:11:30631Durchsuche

Why Does My Recursive Code Continuously Return None?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn