Fibonacci (Haskell)
Aus Infostudium Wiki
Die Implementierung der Fibonacci-Funktion:
naiv
fib :: Int -> Int fib 0 = 0 fib 1 = 1 fib n = fib (n - 2) + fib (n - 1)
endrekursiv
fib :: Integer -> Integer
fib 0 = 0
fib 1 = 1
fib n = fib' (n-1) 1 1 where
fib' 0 x y = x
fib' n x y = fib' (n-1) y (x+y)
etwas eleganter
map fst (scanl1 (\(x1,x2) (y1,y2) -> (x1+x2,x1)) (repeat (0,1)))
nur mit vordefinierten Funktionen
map head (scanl1 (const.reverse.scanl1 (+)) (repeat [0,1]))
