【问题标题】:Creating a list of sums of lists in a list (Scheme)?创建列表中列表总和的列表(方案)?
【发布时间】:2016-04-28 23:29:29
【问题描述】:

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

编写一个方案过程,它接受一个包含至少一个数字的数字列表。您的过程应该返回一个列表,其中包含每个数字列表的单独总和。例如:((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)))))

我的错误是:汽车:期望一对,给定 2

任何解决此问题的帮助或指导将不胜感激。

【问题讨论】:

  • 谢谢!我知道这一定很简单。
  • 哎呀,这是不正确的。应该是(map (lambda (v) (apply + v)) lst)。但我有一个答案可以解释您的 listCreator 出了什么问题。

标签: list sum scheme racket


【解决方案1】:

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

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

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

一旦进行了这些更改,您的代码就会按照编写的方式工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    相关资源
    最近更新 更多