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