我正在尝试在scheme中创建一个函数,以递归方式将值添加到空列表中。
我已经定义了一个空列表:
(define empty '() )
我已经定义了一个应该向列表中添加值的函数:
(define (recapp empt x)
(if (= 0 x)
empt
(begin
(append empt x)
(recapp empt (- x 1)))))
当我进入Scheme(recapp empty 5)时,我得到一个空列表,即使我想获得(1 2 3 4 5)。有什么问题?
感谢您提供帮助。
答案 0 :(得分:1)
问题是(append empt x)不会修改empt
的值。因此,您只是将empt
(值'())传递给recapp
X
(原始参数值)次。
(define (recapp empt x)
(if (= 0 x)
empt
(recapp (cons x empt) (- x 1))))
更接近你想要的。另请注意,主要iota
具有类似的功能。