在球拍中减去数字列表

时间:2017-10-16 19:54:53

标签: list racket subtraction

我正试图在球拍中使用recurssion来减去数字列表。功能如下:

(define (sub lst)
 (cond [(empty? lst) 0]
       [ else (- (first lst) (sub (rest lst)))]))

这似乎不正确,因为球拍从左到右执行减法。即例如:

(- 1 2 3 4 6)假设是-14。但是当我这样做时,就像通过递归给出列表一样,就像(list 1 2 3 4 6)一样,结果为4.我怎样才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

所以你的功能是这样的:

(- (- 1 2) 3)  ; ==> -4

你的功能需要做的是:

(sub '())  ; ==> 0  (identity of - is 0)
(sub '(1)) ; ==> -1 (- identity 1)

还有0和1参数的特殊情况:

{{1}}