gpt4 book ai didi

scheme - 如何修复列表中近对总和的错误

转载 作者:太空宇宙 更新时间:2023-11-03 18:58:14 25 4
gpt4 key购买 nike

我想对 2 对关闭的每个列表求和并返回一个新列表,其中每个器官是下 2 对的总和。

我有这个代码:

我做错了什么?

(define (add-consecutives lst)
(if (null? (Cdr lst)
Null
(cons
(+ (car lst) (cadr lst)
(add-consecutives (cadr lst )))))))

(add-consecutives (list 1 2 3 4))

当我运行它时,我得到了错误的语法。我做错了什么?

谢谢...

最佳答案

有几个语法问题。对于初学者,您忘记关闭 null? 调用的括号,而且递归步骤中的括号放错了位置。所有这些都可以通过适当缩进代码并使用带有语法高亮的 IDE 来避免。

还有更深层次的问题。您推进递归的方式不正确(您需要移动到列表的其余部分)并且您应该在剩下 0、1、2 个元素时处理边缘情况。这应该可以解决所有问题:

(define (add-consecutives lst)
(cond ((null? lst) null)
((null? (cdr lst)) (list (car lst)))
((null? (cddr lst)) (list (+ (car lst) (cadr lst))))
(else (cons (+ (car lst) (cadr lst))
(add-consecutives (cdr lst))))))

让我们尝试一些测试:

(add-consecutives (list))
=> '()
(add-consecutives (list 1))
=> '(1)
(add-consecutives (list 1 2))
=> '(3)
(add-consecutives (list 1 2 3))
=> '(3 5)
(add-consecutives (list 1 2 3 4))
=> '(3 5 7)

关于scheme - 如何修复列表中近对总和的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56090785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com