Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
---- Softwaretechnik (http://www.informatikerboard.de/board/board.php?boardid=18)
----- Laufzeit durch Speicher ersetzen (http://www.informatikerboard.de/board/thread.php?threadid=3473)
Geschrieben von Olaf3577 am 18.02.2017 um 17:53:
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
Geschrieben von eulerscheZahl am 18.02.2017 um 18:16:
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.
Geschrieben von ed209 am 19.02.2017 um 16:36:
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
Es wuerde auch mit Rekursion funktionieren, das ueberlasse ich Dir als Uebungsaufgabe
Gruss,
ED
Geschrieben von eulerscheZahl am 19.02.2017 um 16:38:
Auch ungetestet, aber das sieht mir falsch aus:
faculty[i]=[i-1]*i, vor [i-1] fehlt die Fakultät.
Geschrieben von ed209 am 19.02.2017 um 16:41:
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
Habs geaendert, danke
Forensoftware: Burning Board, entwickelt von WoltLab GmbH