再帰コードは継続的に何も返しません
次の再帰コード スニペットがあるとします:
<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>
予期しない動作が発生する可能性がありますここで、コードは期待される True 値の代わりに None を返します。この問題は、else ブロック内の最後の再帰呼び出しに明示的な return ステートメントが欠けているために発生します。
修正されたコードには、次の追加が含まれる必要があります。
<code class="python">else: return isIn(char, aStr)</code>
このシナリオでは、関数が再帰するとき、再帰呼び出しの戻り値を関数自体に割り当てます。再帰呼び出しで文字が見つからなかった場合、False が返され、関数はそれを独自の値として返します。
最後の再帰呼び出しで明示的な return ステートメントがないと、関数は指定された値なしで終了に到達します。戻り値。その結果、暗黙的に None が返されることになり、元のコードが None を返し続けたのはそのためです。
以上が再帰コードが継続的に None を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。