[Haskell] Warum krieg ich hier einen Stack overflow? (Fibbonaci)

InfDude

Cadet 4th Year
Registriert
Apr. 2016
Beiträge
95
Hi, habe folgende simple Funktion für Fibonacci in Haskell :

Code:
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)

Doch für zB. "fib 2" kommt "Exception: stack overflow". Warum? Selbst wenn ich 1:1 etwas für Fibonacci aus dem Netz kopiere (So viele verschiedene gibt es jetzt auch nicht) kommt diese Meldung. Woran liegt das? Mit Haskell Platform 8.2.2 im ghci geschrieben
 
Bin in Haskell nicht firm, würde aber meinen, dass Du dir eine Endlosschleife gebaut hast... Oder es fehlt die O(fib n) Addition (was auch immer das ist)... Kannst Du hier nachlesen: https://wiki.haskell.org/The_Fibonacci_sequence
 
O(fib n) ist "Gross O (Der Buchstabe, wie Oma) Notation / Landau. Ist eine Einheit der Komplexitaet. Bei O von n skaliert dein Programm linear mit der Inputgroesse.
 
Vielleicht hast du es falsch in den GHCI geschrieben. Mach doch eine Datei fib.hs und schreib rein:
fib :: Int -> Int
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)

Das ganze dann im GHCI mit :l fib.hs laden und mit fib 3 ausführen.
 
@MasterOfWar

So funktionierts. Gut zu wissen. Vielen Dank!
 
Zurück
Oben