ホームページ >バックエンド開発 >Python チュートリアル >再帰関数が時々何も返さないのはなぜですか?
再帰関数が None を返すのはなぜですか?
提供されたコードでは、get_input() 関数が時々 None を返すという問題に直面しています。これは、ユーザーが最初に無効な値を入力し、その後「a」または「b」を入力した場合に発生します。その理由を理解するために、関数をさらに詳しく調べてみましょう。
関数 get_input() は、ユーザーに「a」または「b」の入力を求めます。入力が一致しない場合は、メッセージを出力し、それ自体を再帰的に呼び出して入力を再度取得します。この再帰フローにより、ユーザーが有効な入力を提供することが保証されます。
問題は、関数内の if ステートメントで発生します。ユーザーが最初に無効な値を入力し、関数がそれ自体を再帰的に呼び出すと、再帰呼び出しは何も返しません。代わりに、関数の末尾から外れます。
Python では、関数の末尾から外れることは None を返すことと同じです。これは、ユーザーが最初に無効な値を入力したときに get_input() 関数が None を返すことを意味します。
この問題を解決するには、再帰呼び出しが値を返すようにする必要があります。 if ステートメントで、次の行を置き換えます:
get_input()
次の行:
return get_input()
この変更により、再帰呼び出しが後続の呼び出しの結果を返すようになります。適切な入力 (「a」または「b」)、またはユーザーが無効な値を入力し続ける場合は「なし」。
以上が再帰関数が時々何も返さないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。