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。这里有什么问题?

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

4

1 回答 1

2

最后有个小错误。改变这个:

(+ 1 (deep_count (rest xs)))

...为此,您已准备就绪:

(+ (first xs) (deep_count (rest xs)))
于 2013-02-19T01:11:54.480 回答