Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 列表中数字的总和_List_Scheme - Fatal编程技术网

List 列表中数字的总和

List 列表中数字的总和,list,scheme,List,Scheme,我正在写一个函数,它给出一个列表中所有数字的和,忽略单词或字母 (define (sum-list ls) (cond ((null? ls) 0) ((not (number? (car ls))) (sum-list(cdr ls))) (else (+ (car ls) (sum-list (cdr ls)))) ) ) (深和’(a2(b(1c))3))=>;应该返回6 但是我得了5分。这意味着我的代码没有到达内部循环如果要检查嵌

我正在写一个函数,它给出一个列表中所有数字的和,忽略单词或字母

(define (sum-list ls)
  (cond ((null? ls) 0)
        ((not (number? (car ls))) (sum-list(cdr ls)))
        (else (+ (car ls) (sum-list (cdr ls))))
        )
  )
(深和’(a2(b(1c))3))=>;应该返回6


但是我得了5分。这意味着我的代码没有到达内部循环

如果要检查嵌套列表,必须有另一个条件来检查元素是否是列表,然后递归调用sum list

null?
条件下添加这一行就可以了


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

如果要检查嵌套列表,必须有另一个条件来检查元素是否为列表,然后递归调用sum list

null?
条件下添加这一行就可以了


((列表)(汽车ls))(+(总和列表(汽车ls))(总和列表(cdr ls)))

这不是遍历列表的方法,它更像这样:

(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

这不是遍历列表的方法,它更像这样:

(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