Ich habe eine Funktion, die zwei rekursive Aufrufe hat, und ich versuche, es in eine iterative Funktion zu konvertieren. Ich habe es herausgefunden, wo ich es mit einem Anruf ziemlich leicht tun kann, aber ich kann nicht herausfinden, wie man den anderen Anruf einbaut.Konvertieren einer Funktion mit zwei rekursiven Aufrufe in eine interative Funktion
die Funktion:
def specialMultiplication(n):
if n < 2:
return 1
return n * specialMultiplication(n-1) * specialMultiplication(n-2)
Wenn ich nur einer von ihnen hatte, wäre es wirklich einfach sein:
def specialMult(n, mult = 1):
while n > 1:
(n, mult) = (n-1, n * mult) # Or n-2 for the second one
return mult
Ich kann einfach nicht herausfinden, wie der zweite Anruf hinzuzufügen, um bekomme die richtige Antwort insgesamt. Vielen Dank!
Ihr Algorithmus Laufzeit ist exponentiell. Ob Sie es rekursiv oder iterativ implementieren, ändert nur die Laufzeit um einen konstanten Faktor. – merlin2011
Danke @ merlin2011.Das sehe ich jetzt. Ich versuche nur herauszufinden, wie man es in einen dynamischen Stil umwandeln kann. – firelover
Blckknghts Antwort ist eine DP-Lösung, die in linearer Zeit laufen sollte. – merlin2011