我已经制作了一个基本程序,输出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)
.
任何解释如何做到这一点将不胜感激.
(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数,这不是您最关心的问题.)