scheme吧 关注:1,490贴子:964
  • 3回复贴,共1

Fibonacci in scheme

只看楼主收藏回复

(define (fib x)
  (if (< x 2)
      x
      (+ (fib (-1+ x))
         (fib (- x 2)))))
(define (fib2 x)
  (define (fib-call i fibonacci-of-i-before fibonacci-of-i x-to-reach)
    (cond ((>= i x-to-reach)
           fibonacci-of-i)
          ((< i x-to-reach)
           (fib-call (1+ i)
                     fibonacci-of-i
                     (+ fibonacci-of-i-before fibonacci-of-i)
                     x-to-reach))))
  (cond ((< x 2)
         x)
        (#t (fib-call 1 0 1 x))))



1楼2008-10-17 22:26回复
    • 122.194.137.*
    不用另外讨论(< x 2)的,可以这么改写
    (define (fib n)
         (define (fib-call a b m n)
           (cond ((<= m n) (fib-call (+ a b) a (+ m 1) n))
                 (else a)))
         (fib-call 0 1 1 n))


    3楼2010-08-03 10:42
    收起回复