Einzelnen Beitrag anzeigen
Alt 05.04.09, 12:17   #19 (permalink)
Lesco
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

Für die reine Berechnung der Anzahl:
Man kann das Ganze auch als ein kombinatorisches Problem auffassen: Für k Zweier-Schritte, gibt es genau (n - 2*k + k) über k Möglichkeiten, diese anzuordnen. Dies summiert man dann für 0..n / 2 auf und man hat die Anzahl der Möglichkeiten:
(In Haskell: )
Code:
fac 0 = 1
fac n = product [1..n]

n `binom` k = fac n `quot` (fac k * fac (n-k))

treppe :: Integer -> Integer
treppe n = sum [(n - 2*k + k) `binom` k | k <- [0..n `quot` 2]]
Dabei sieht man auch, dass es, wie oben erwähnt, sich um die Folge der Fibonacci-Zahlen handelt, daher als Einzeiler/Zweizeiler(mit Absicht unverständlich):
Code:
import Control.Monad.Fix
treppe n = fix ((1:) . scanl (+) 1) !! n

Geändert von Lesco (19.11.09 um 13:56 Uhr)
Lesco ist offline   Mit Zitat antworten
 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61