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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-02 14:34:30571ブラウズ

Why Does My Python Recursive Function Return None?

Python の再帰関数が None を返す理由

Python では、再帰関数が予期せず None を返すという問題が発生することがあります。原因と解決策を理解するために、具体的な例を見てみましょう。

次のコード スニペットを考えてみましょう:

<code class="python">def gcdIter(a, b):
    a, b = min(a, b), max(a, b)  # Assign smaller value to 'a' and larger value to 'b'

    if b % a == 0:
        print(a)
        return a
    gcdIter(a, b % a)</code>

このコードは、反復アプローチを使用して最大公約数 (GCD) を計算することを目的としています。 。ただし、場合によっては誤って None を返します。

理由を理解するために、再帰呼び出しを調べてみましょう。

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

この呼び出しは、更新された a の値を使用して gcdIter 関数への別の再帰呼び出しを行います。および b.ただし、この再帰呼び出しの戻り値は無視されるため、元の gcdIter 関数によって None が返されます。

解決策は、再帰呼び出しの結果を返すことです。関数の正しいバージョンは次のようになります:

<code class="python">def gcdIter(a, b):
    a, b = min(a, b), max(a, b)  # Assign smaller value to 'a' and larger value to 'b'

    if b % a == 0:
        return a
    return gcdIter(a, b % a)</code>

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

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