创建列表中的列表总和列表(Scheme)?

时间:2016-04-28 23:29:29

标签: list sum scheme racket

我对Scheme不是很熟悉,所以我遇到了这个问题。

编写一个方案程序,该程序采用每个包含至少1个数字的数字列表。您的程序应返回一个列表,其中包含每个数字列表的各个总和。例如:((1 2 3)(4 5)(6)(7 8 9 10)) - > (6 9 6 34)

到目前为止,我正在尝试创建一个listCreator函数和一个sumHelper函数。我还在测试,但是我遇到了错误。

    (define lst '((1 2 3) (4 5) (6) (7 8 9 10)))

    lst

    (define sumHelper
      (lambda (lst)
        (if (null? lst)
             0
             (+ (car lst) (sumHelper (cdr lst))))))

    (define listCreator
      (lambda (lst)
        (if (null? lst)
             0
             (sumHelper (car lst)))))

我的错误是:car:期待一对,给定2

非常感谢任何帮助或解决此问题的方向。

1 个答案:

答案 0 :(得分:1)

您对listCreator的定义没有构建,也不适用于列表的其余部分:

(define listCreator
  (lambda (lst)
    (if (null? lst)
         '()
         (cons (sumHelper (car lst)) (listCreator (cdr lst))))))

如果列表为空,则值应为空列表:'()而不是0

完成这些更改后,您的代码就会按照书面形式运行。