Heim > Backend-Entwicklung > Python-Tutorial > Warum gibt mein rekursiver Code ständig „Keine' zurück?

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

Barbara Streisand
Freigeben: 2024-10-27 01:11:30
Original
733 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage