ホームページ >バックエンド開発 >Python チュートリアル >GCD を計算するときに「gcdIter」が「None」を返すのはなぜですか?

GCD を計算するときに「gcdIter」が「None」を返すのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-03 10:59:29944ブラウズ

Why Does `gcdIter` Return `None` When Calculating GCD?

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

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