Rekursion ist schlecht, wenn du schnell sein willst. Eine einfache Schleife ist schneller. Zwischenspeichern kann Sinn machen - je nachdem wie oft du die Fakultät brauchst. Wenn du das Ergebnis ständig brauchst, ist es schnell im Cache und du sparst Zeit. Bei nur wenigen Zugriffen kann das Nachschlagen länger dauern als neu berechnen.
Die Frage ist etwas vage, aber hier ein naiver Ansatz in python (ungetested):
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
calculated = 1
faculty = dict()
faculty[1] = 1
def getFaculty(n):
if n>calculated:
for i in range(calculated+1, n):
faculty[i]=faculty[i-1]*i
return faculty[n]
Kurz: Merk dir alle Zwischenergebnisse.
Bestimmt gibt es schlauere Wege die Fakultaet zu berechnen, aber Du hast nicht beschrieben was Dein Ursprungsalgorithmus ist
Es wuerde auch mit Rekursion funktionieren, das ueberlasse ich Dir als Uebungsaufgabe
Gruss,
ED
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von ed209: 19.02.2017 16:41.