Fibonacci Folge mit Python?

3 Antworten

Meinst du so?

Dies gibt die ersten zehn Zahlen (exklusive null) aus. Diese Anzahl kannst du mit der Variable max verändern.

https://repl.it/Ju0u/0

ralphdieter  02.08.2017, 23:36
oldLast = last 
last += preLast
preLast = oldLast

Dafür gibt's in Python eine wunderschöne Abkürzung:

preLast, last = last, last+preLast

Das ist dieselbe Technik wie beim Vertauschen:

x, y = y, x
1
tavkomann  02.08.2017, 23:46
@ralphdieter

Das ist ja praktisch. Ich habe Python nie wirklich gelernt, deshalb wusste ich das noch nicht. Werde ich mir aber merken.

1
def fibonacci ( x0=0, x1=1 ):
yield x0
while True:
yield x1
x0, x1 = x1, x0+x1

from itertools import islice

for f in enumerate(1, islice(fibonacci(1,1), 1000) ):
print "f(%4d) =%5d" % f
ralphdieter  02.08.2017, 23:24

Mein Klassiker: Die Argumente von enumerate() sind vertauscht. So geht's:

for f in enumerate(islice(fibonacci(1,1), 1000), 1 ):

Und Klammern bei printf schaden auch nicht:

   print( "f(%4d) =%5d" % f )
0

Ja, geht. Einfach eine Funktion rekursiv aufrufen. 

Nächstes mal die Frage genauer stellen.

Tuxgamer2  02.08.2017, 22:02

Oder iterativ - und damit die Laufzeit von richtig schlecht auf eigentlich ganz gut drücken ;).

2
xxxcyberxxx  02.08.2017, 22:06
@Tuxgamer2

jup, aber OJ hat ja nichts genaues gefragt. Rekursiv wär da das kürzeste ;)

0