(define (some n)
(cond
[(empty? n) false]
[(cons? n)
(+ (first n) 1)]))
我遇到了递归问题。它将 1 添加到列表的第一个元素。我如何将它添加到列表的其余部分并结合答案?
您的代码存在几个问题,您必须正确使用模板来遍历输入列表并构建输出列表作为答案:
(define (some n)
(cond
[(empty? n) ; if the list is empty
empty] ; return the empty list, not false!
[else ; if it's not empty, then it's a list
(cons (+ (first n) 1) ; cons the new element
(some (rest n)))])) ; and advance the recursion
基本步骤始终相同:询问列表是否为空,cons
当前元素,将递归推进到列表的其余部分。具体细节会根据问题而改变,但上面的模板大部分时间都会让你走上正轨。现在结果将是一个新列表,其所有元素都加一:
(some '(1 2 3 4 5))
=> '(2 3 4 5 6)