再帰コードが True 値を返せない
指定されたコードは、二分検索アプローチを使用して文字列内に文字が存在するかどうかを判断することを目的としています。ただし、期待される True 値を返すことができず、None を返し続けます。
分析:
コードでは、文字と文字列を次のように受け取る再帰関数 isIn が使用されています。入力。文字列を中間点で 2 つの半分に分割することにより、二分検索を実行します。文字が中点と一致する場合、その文字の存在を示すメッセージが出力され、True が返されます。
文字が中点文字より大きく、中点が文字列の最後の文字ではない場合 (つまり、検索する静止文字)、関数は前半部分を削除して文字列を更新します。文字が中間点文字より小さく、中間点が文字列の最初の文字ではない場合 (つまり、検索する文字がまだある場合)、関数は後半を削除して文字列を更新します。
ただし、コードには、else ブロック内の最後の行に return ステートメントがありません。この return ステートメントがないと、関数は明示的に値を返さずに単に終了します。これにより、Python は暗黙的に None を返します。そのため、関数は None を返し続けます。
解決策:
この問題を解決するには、return ステートメントを追加する必要があります。 else ブロック内の最後の行:
<code class="python">return isIn(char, aStr)</code>
この変更により、関数は再帰呼び出しの結果を返し、文字列内で文字が見つかった場合は最終的に True を返します。
以上が再帰二分探索コードが True ではなく None を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。