Python 再帰関数の不可解な動作を理解する: gcdIter が None を返すのはなぜですか?
再帰関数を扱うときは、その関数の内容を把握することが重要ですリターン機構。 2 つの数値の最大公約数 (GCD) を計算することを目的とした、次の gcdIter 関数について考えてみましょう。ただし、特定の入力値 (例: 306 や 136) では、予期せず None が返されます。
問題はコードの再帰部分にあります。
gcdIter (a,b%a)
関数は関連するパラメータを使用して自分自身を再帰的に呼び出すと、その呼び出しの戻り値を処理できません。 GCD の結果を保持するには、戻り値をチェーンに戻す必要があります:
return gcdIter (a,b%a)
さらに、コードを合理化するためにマルチターゲット変数の代入を使用することが賢明です:
def gcdIter(a, b): a, b = min(a, b), max(a, b) if b % a == 0: return a return gcdIter(a, b % a)
これらの問題に対処することで、gcdIter は、期待どおり、指定された入力値に対して一貫して GCD を返すようになります。
以上がGCD を計算するときに「gcdIter」が「None」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。