Laufzeit durch Speicher ersetzen

Neue Frage »

Auf diesen Beitrag antworten »
Olaf3577 Laufzeit durch Speicher ersetzen

Meine Frage:
Guten Tag,

Wie kann man bei der mehrfachen Berechnung der Fakultät Laufzeit durch Speicher ersetzen?



Meine Ideen:
Nach etwas Recherche würde ich sagen: -über Rekursion und Zwischenspeicherung
 
Auf diesen Beitrag antworten »
eulerscheZahl

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.
Auf diesen Beitrag antworten »
ed209

Hi

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 smile

Es wuerde auch mit Rekursion funktionieren, das ueberlasse ich Dir als Uebungsaufgabe Augenzwinkern

Gruss,
ED
Auf diesen Beitrag antworten »
eulerscheZahl

Auch ungetestet, aber das sieht mir falsch aus:
faculty[i]=[i-1]*i, vor [i-1] fehlt die Fakultät.
 
Auf diesen Beitrag antworten »
ed209

Zitat:
Original von eulerscheZahl
Auch ungetestet, aber das sieht mir falsch aus:
faculty[i]=[i-1]*i, vor [i-1] fehlt die Fakultät.


Wollte nur gucken ob Du auch aufpasst Augenzwinkern
Habs geaendert, danke
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »