gpt4 book ai didi

recursion - list 方案总和

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

首先,这是家庭作业,但我只是在寻找有关如何执行此操作的提示或伪代码。

我需要使用递归 对列表中的所有项目求和。但是,如果它在列表中遇到不是数字的东西,它需要返回空集。这是我的尝试:

(DEFINE sum-list
(LAMBDA (lst)
(IF (OR (NULL? lst) (NOT (NUMBER? (CAR lst))))
'()
(+
(CAR lst)
(sum-list (CDR lst))
)
)
)
)

这会失败,因为它无法将空集添加到其他内容。通常,如果它不是数字,我只会返回 0 并继续处理列表。

最佳答案

我建议您使用并返回一个累加器来存储总和;如果您在遍历列表时发现一个非数字,您可以立即返回空的列表,否则递归将继续直到列表耗尽。

沿着这些线的东西(填空!):

(define sum-list
(lambda (lst acc)
(cond ((null? lst) ???)
((not (number? (car lst))) ???)
(else (sum-list (cdr lst) ???)))))

(sum-list '(1 2 3 4 5) 0)
> 15

(sum-list '(1 2 x 4 5) 0)
> ()

关于recursion - list 方案总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9151045/

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