I realized that the code for the fibonacci functions in the codepatterns
section is wrong:
The code is:
Code Select
; classic recursion
; slow and resource hungry
(define (fib n)
(if (< n 2) 1
(+ (fib (- n 1))
(fib (- n 2)))))
> (fib 12)
233
Should be:
Code Select
; classic recursion
; slow and resource hungry
(define (fib n)
(if (< n 2) n
(+ (fib (- n 1))
(fib (- n 2)))))
> (fib 12)
144
The iterative version should be fixed also, something like
that should be correct:
Code Select
; iteration
; fast and also returns the whole list
(define (fibo n , f)
(set 'f '(1 0))
(case n
(0 (1 f))
(1 f)
(true
(dotimes (i (- n 1))
(push (+ (f 0) (f 1)) f)))))
> (fibo 12)
(144 89 55 34 21 13 8 5 3 2 1 1 0)