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

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

Mary-Kate Olsen
リリース: 2024-11-02 18:32:31
オリジナル
323 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート