簡體   English   中英

列表中數字的方案總和

[英]scheme sum of the numbers in a list

我正在編寫一個函數,該函數給出列表中所有數字的總和,而忽略了單詞或字母。

(define (sum-list ls)
  (cond ((null? ls) 0)
        ((not (number? (car ls))) (sum-list(cdr ls)))
        (else (+ (car ls) (sum-list (cdr ls))))
        )
  )

(deep-sum'(a 2(b(1 c))3))=>; 應該返回6。

但是我得到了5.這意味着我的代碼沒有到達內循環

那不是遍歷列表列表的方式,它更像是這樣:

(define (deep-sum ls)
  (cond ((null? ls) 0)
        ((not (pair? ls))            ; only add atoms
         (if (number? ls) ls 0))     ; only add numbers
        (else (+ (deep-sum (car ls)) ; advance recursion on both car and car
                 (deep-sum (cdr ls))))))

現在,它可以按預期工作:

(deep-sum '(a 2 (b (1 c)) 3))
=> 6

如果要檢查嵌套列表,則必須具有另一個條件,即檢查元素是否為列表,然后遞歸調用sum-list。

將此行添加到null?下方null? 條件應該做到的。

((list? (car ls)) (+ (sum-list (car ls)) (sum-list (cdr ls))))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM