;;; Fibonacci-Zahlen
;;; DrScheme
;;; Wolfgang.Urban@schule.at

;;; Algorithmus 1
;
(define (fibo1 n)
  (if (<= n 2)
      1
      (+ (fibo1 (- n 1)) (fibo1 (- n 2)))
  )
)


; Algorithmus 1a nicht möglich
; if und cond *müssen* einen else-Zweig besitzen
(define (fibo1_ n)
  (cond ((<= n 2) 1)
        (else (+ (fibo1_ (- n 1)) (fibo1_ (- n 2))))
  )
)

; Algorithmus 2 nicht möglich ???
; ??? es gibt keine assoziative Listen ???

; Algorithmus 3 nicht möglich ???
; in Scheme gibt es keine echte Iteration


;;; Algorithmus 4
;
(define (fibo4 n a b)
  (cond ((= n 1) a)
        ((= n 2) b)
        (else (fibo4 (- n 1) b (+ a b)))
  )
)

;;; Aufrufbeispiele

(fibo1 10)
(fibo4 10 1 1)