2013-02-19 97 views
1

我想创建一个方案递归函数deep_count,即使它嵌套在子列表中,也可以统计数字的总和。方案递归

(define deep_count 
    (lambda (xs) 
    (cond 
     ((empty? xs) 0) 
     ((list? (first xs)) (+ 
          (deep_count (first xs)) 
          (deep_count (rest xs)))) 
     (else (+ 1 (deep_count (rest xs))))))) 

(deep_count '(1 2 3 (4 5 6) ((7 8 9) 10 (11 (12 13))))) 

但我得到13,而不是91 请告诉我错在这里?

编辑:没关系,我知道为什么。

回答

2

最后还是有一个小错误。更改此:

(+ 1 (deep_count (rest xs))) 

......对于这一点,而你所有的设置:

(+ (first xs) (deep_count (rest xs)))