2013-02-19 111 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)))