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