ホームページ >バックエンド開発 >Python チュートリアル >再帰関数が時々何も返さないのはなぜですか?

再帰関数が時々何も返さないのはなぜですか?

DDD
DDDオリジナル
2024-12-29 04:53:10837ブラウズ

Why Does My Recursive Function Sometimes Return None?

再帰関数が 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。