(define (some n)
(cond
[(empty? n) false]
[(cons? n)
(+ (first n) 1)]))
我遇到了递归问题。它将1添加到列表的第一个元素。我如何将其添加到列表的其余部分并结合答案?
答案 0 :(得分: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
当前元素,推进列表其余部分的递归。具体细节将根据问题而变化,但上述模板将使您在大多数时间都处于正确的轨道上。现在结果将是一个新列表,其所有元素都加1:
(some '(1 2 3 4 5))
=> '(2 3 4 5 6)