Citat:
Ursprungligen postat av
Bonnatorp
Testade just den här lösningen, och den fungerade mycket bra. Mycket bättre körtider en att ha en dict som hela tiden återställdes mellan iterationerna.
Får hoppas att läraren godkänner den lilla gliringen.
Det var också en fantastisk lösning när man vill vara lite bråkig tillbaka.
Ska lägga den på minnet

Men du använde väl inte mina namn? Jisses.
Hmm vad är det med lektorer och komplicera saker och ting. Vad skall du göra i den uppgiften du skickade mig?
Det ser ut som att du skall öva Fib.
En sabla komplicerad kod ni har gjort för något som kan lösas med EN while loop:
>>> while len(g)<10:
... if len(g)==1:
... g.append(1)
... continue
... g.append(g[-1]+g[-1-1])
...
>>> g
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
>>>
Vad ska du har dicten till?
Sedan kan du göra en wrap av din innerfunktion och tidsmäta den.
Men jag har absolut ingen aning om vad fasiken ni vill göra med den där långa och otympliga koden du skickade mig.
För som du ser behöver du inte spara redan kalkylerade värden i en dict. Du behöver heller inte hämta dessa värden om och om och om och om igen.
Men är kursmålet att du skall använda dict så gör et, men det ser mer ut som att du inte skall använda globala variabler. Vilket jag förvisso gör i detta exempel, men det för att jag har en while loop.
En lite mer lämplig funktion utan globala saker:
Kod:
def calc_fib():
g=[1]
if len(g)==1: g.append(1)
while len(g) <20: g.append(g[-1]+g[-1-1])
return g
f = calc_fib()
print(f)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]