在Scheme中创建Fibonacci数列表?

Phi*_*hil 3 lisp scheme

我已经制作了一个基本程序,输出Fibonacci序列的长度为"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))))
Run Code Online (Sandbox Code Playgroud)

例如,它将输出112358.

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

任何解释如何做到这一点将不胜感激.

Fre*_*Foo 6

(map fibh '(1 2 3 4 5 6))
Run Code Online (Sandbox Code Playgroud)

会做的伎俩.如果您不想手动枚举整数,那么实现一个简单的递归函数,它将为您完成,例如:

(define (count i n)
  (if (= i n)
    '()
    (cons i (count (+ i 1) n))))
Run Code Online (Sandbox Code Playgroud)

(注意:这不是尾递归,但使用该算法计算Fibonacci数,这不是您最关心的问题.)