2013-02-22 60 views
2

我想实现一个功能列表的其中钙总和的总和,它的名字是sum -计划 - 列表

(define (sum elemList) 
    (if 
    (null? elemList) 
    (+ (car elemList) (sum (cdr elemList))) 
    0 
) 
) 

上述实施给出错误的结果,例如 -

> (sum (list 1 2 3 4)) 
0 

我在这里做错了什么?

回答

6

我认为你换了然后if其他部分:

(define (sum elemList) 
    (if 
    (null? elemList) 
    0 
    (+ (car elemList) (sum (cdr elemList))) 
) 
) 

在原有的功能,对于每一个非空列表,返回0

+2

而对于一个空列表,会产生一个错误,因为它会尝试将'car'和'cdr'作为空列表。 – sepp2k 2013-02-22 08:40:45