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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-02 18:32:31324ブラウズ

Why Does My Recursive GCD Function Return None?

Python 再帰関数の戻り値を理解する

再帰関数では、再帰呼び出しの戻り値を正しく処理して取得することが重要です。望ましい結果。提供されたコードを調べて、特定のケースで None が返される理由を理解しましょう。

gcdIter 関数は、反復アプローチを使用して 2 つの数値の最大公約数 (GCD) を見つけることを目的としています。ただし、問題は再帰呼び出しにあります。

<code class="python">gcdIter(a, b%a) </code>

関数は再帰呼び出しの戻り値の割り当てに失敗します。デフォルトでは、関数が明示的に値を返さない場合、Python は None を返します。したがって、関数が再帰的に呼び出される場合、値 none によって正しい GCD 値が上書きされます。

これに対処するには、return キーワードを使用して再帰呼び出しの戻り値を渡す必要があります:

<code class="python">return gcdIter(a, b % a)</code>

ここで、関数は再帰呼び出しから取得した GCD 値を割り当て、正しい結果が返されるようにします。

さらに、関数定義で複数のターゲットの割り当てを使用することで、コードをさらに簡素化できます。

<code class="python">def gcdIter(a, b):
    a, b = min(a, b), max(a, b)
    if b % a == 0:
        return a
    return gcdIter(a, b % a)</code>

あるいは、GCD 反復関数のよりコンパクトなバージョンは次のように表すことができます。

<code class="python">def gcd_iter(a, b):
    return gcd_iter(b, a % b) if b else abs(a)</code>

再帰呼び出しを修正し、適切な戻り値を使用することで、gcdIter 関数は次のように表現できます。どのような場合でも None を返さずに、2 つの数値の GCD を効率的に見つけます。

以上が再帰 GCD 関数が何も返さないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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