再帰は、関数がそれ自体を呼び出して問題を解決するプログラミング手法です。この記事では、リスト内の整数の合計を見つけるための Python での再帰の実装と、その他の一般的な再帰アプリケーションに焦点を当てます。
関数 listSum は、整数のリストを受け取り、その合計を返します。基本的な再帰実装は次のとおりです。
<code class="python">def listSum(ls): # Base condition: if the list is empty, return 0 if not ls: return 0 # Recursive call with the rest of the list return ls[0] + listSum(ls[1:])</code>
上記の再帰を最適化するために、末尾呼び出し再帰を使用できます。これには、現在の結果をリストとともに再帰呼び出しに渡すことが含まれます。
<code class="python">def listSum(ls, result): if not ls: return result return listSum(ls[1:], result + ls[0])</code>
中間リストの作成を避けるために、現在の要素のインデックスを再帰呼び出し:
<code class="python">def listSum(ls, index, result): if index == len(ls): return result return listSum(ls, index + 1, result + ls[index])</code>
よりカプセル化されたアプローチを希望する場合は、再帰ロジックを処理するために listSum 内に内部関数を定義できます:
<code class="python">def listSum(ls): def recursion(index, result): if index == len(ls): return result return recursion(index + 1, result + ls[index]) return recursion(0, 0)</code>
便宜上、デフォルト パラメータを使用して関数呼び出しを簡素化できます。
<code class="python">def listSum(ls, index=0, result=0): if index == len(ls): return result return listSum(ls, index + 1, result + ls[index])</code>
再帰はべき乗の計算にも適用できます。 。基数と指数を取るべき関数を考えてみましょう:
<code class="python">def power(base, exponent): if exponent <= 1: return base return base * power(base, exponent - 1)</code>
テール コールの再帰を使用して電力を最適化するには:
<code class="python">def power(base, exponent, result=1): if exponent <= 0: return result return power(base, exponent - 1, result * base)</code>
以上がPython で再帰を効果的に実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。