Lisp 在Scheme中创建斐波那契数列表?

Lisp 在Scheme中创建斐波那契数列表?,lisp,scheme,Lisp,Scheme,我已经做了一个基本程序,可以输出任意长度“n”的斐波那契序列。 以下是我的代码: (define (fibh n) (if (< n 2) n (+ (fibh (- n 1)) (fibh (- n 2))))) (define (fib n) (do ((i 1 (+ i 1))) ((> i n)) (display (fibh i)))) (定义(fibh n) (如果(in)) (显示(fibh i))) 它将输出,

我已经做了一个基本程序,可以输出任意长度“n”的斐波那契序列。 以下是我的代码:

(define (fibh n)
  (if (< n 2)
      n
      (+ (fibh (- n 1)) (fibh (- n 2)))))

(define (fib n)
  (do ((i 1 (+ i 1)))
      ((> i n))
    (display (fibh i))))
(定义(fibh n)
(如果(in))
(显示(fibh i)))
它将输出,例如,
112358

我想要的是一个列表,例如
(1 1 2 3 5 8)

请解释如何做到这一点,我们将不胜感激

(map fibh '(1 2 3 4 5 6))
我会成功的。如果您不想手动枚举整数,那么实现一个简单的递归函数来完成此操作,如:

(define (count i n)
  (if (= i n)
    '()
    (cons i (count (+ i 1) n))))
(注意:这不是尾部递归,但使用该算法来计算斐波那契数,这不是您最关心的。)

Petite Chez Scheme Version 8.3
Copyright (c) 1985-2011 Cadence Research Systems

> (define (fib n)
    (let loop ((n n) (f2 1) (f1 1) (fs (list)))
      (if (zero? n) (reverse fs)
        (loop (- n 1) f1 (+ f2 f1) (cons f2 fs)))))
> (fib 50)
(1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584
 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811
 514229 832040 1346269 2178309 3524578 5702887 9227465
 14930352 24157817 39088169 63245986 102334155 165580141
 267914296 433494437 701408733 1134903170 1836311903
 2971215073 4807526976 7778742049 12586269025)