Heim >Backend-Entwicklung >Python-Tutorial >Warum gibt mein rekursiver binärer Suchcode „None' statt „True' zurück?
Rekursiver Code gibt keinen wahren Wert zurück
Der angegebene Code zielt darauf ab, mithilfe eines binären Suchansatzes festzustellen, ob ein Zeichen in einer Zeichenfolge vorhanden ist. Allerdings wird der erwartete True-Wert nicht zurückgegeben und es wird weiterhin None zurückgegeben.
Analyse:
Der Code verwendet eine rekursive Funktion isIn, die ein Zeichen und eine Zeichenfolge als akzeptiert Eingang. Es führt eine binäre Suche durch, indem es die Zeichenfolge in der Mitte in zwei Hälften teilt. Wenn das Zeichen mit dem Mittelpunkt übereinstimmt, gibt es eine Meldung aus, die die Anwesenheit des Zeichens angibt, und gibt „True“ zurück.
Wenn das Zeichen größer als das Mittelpunktzeichen ist und der Mittelpunkt nicht das letzte Zeichen in der Zeichenfolge ist (d. h., es gibt noch zu durchsuchende Zeichen), aktualisiert die Funktion die Zeichenfolge, indem sie die erste Hälfte entfernt. Wenn das Zeichen kleiner als das Mittelpunktzeichen ist und der Mittelpunkt nicht das erste Zeichen in der Zeichenfolge ist (d. h. es müssen noch Zeichen gesucht werden), aktualisiert die Funktion die Zeichenfolge, indem sie die zweite Hälfte entfernt.
Allerdings Dem Code fehlt eine Return-Anweisung in der letzten Zeile innerhalb des else-Blocks. Ohne diese Return-Anweisung wird die Funktion einfach beendet, ohne explizit einen Wert zurückzugeben. Dies führt dazu, dass Python implizit None zurückgibt, weshalb die Funktion weiterhin None zurückgibt.
Lösung:
Um das Problem zu beheben, müssen Sie eine Return-Anweisung hinzufügen in der letzten Zeile innerhalb des else-Blocks:
<code class="python">return isIn(char, aStr)</code>
Mit dieser Änderung gibt die Funktion das Ergebnis des rekursiven Aufrufs zurück, der schließlich True zurückgibt, wenn das Zeichen in der Zeichenfolge gefunden wird.
Das obige ist der detaillierte Inhalt vonWarum gibt mein rekursiver binärer Suchcode „None' statt „True' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!