2つの再帰呼び出しを持つ関数がありますが、これを反復関数に変換しようとしています。私はそれをどこで簡単に行うことができるのか分かりましたが、他の呼び出しを組み込む方法を理解することはできません。 2つの再帰呼び出しを含む関数を中間関数に変換する
機能:def specialMultiplication(n):
if n < 2:
return 1
return n * specialMultiplication(n-1) * specialMultiplication(n-2)
私はちょうどそれらのいずれかを持っていた場合、それは本当に簡単に次のようになります。
def specialMult(n, mult = 1):
while n > 1:
(n, mult) = (n-1, n * mult) # Or n-2 for the second one
return mult
私はただの中で2番目の呼び出しを追加する方法を見つけ出すことはできません全体的に正しい答えを得る。ありがとう!
の簡易版です。再帰的または反復的に実装するかどうかは、実行時間を一定の係数だけ変更します。 – merlin2011
ありがとう@ merlin2011。私は今それを見る。それを動的なスタイルに変換する方法を理解しようとしています。 – firelover
Blckknghtの答えは線形時間で動作するDPソリューションです。 – merlin2011