gpt4 book ai didi

scheme - 简单方案,对列表中的所有元素进行平方

转载 作者:行者123 更新时间:2023-12-02 05:26:28 25 4
gpt4 key购买 nike

好吧,我是 Scheme 的新手,我以为我理解它,但对这个问题感到困惑。我想对列表的所有元素进行平方。因此,(mapsq '(1 2 3)) 返回 (list 1 4 9)。

我的代码:

(define mapsq
(lambda (ls)
(cond ((null? ls) 0)
(else (cons (car ls) (car ls))
(mapsq (cdr ls)))))))

最佳答案

在实际(非学术)上下文中,可以使用map 过程轻松解决此问题:

(define mapsq
(lambda (ls)
(map (lambda (x) (* x x))
ls)))

当然,如果这是作业并且您需要从头开始实现解决方案,我不应该填满答案。最好自己找出解决方案,填空:

(define mapsq
(lambda (ls)
(cond ((null? ls) ; If the list is empty
<???>) ; ... then return the empty list.
(else ; Otherwise
(cons (* <???> <???>) ; ... square the first element in the list
(mapsq <???>)))))) ; ... and advance the recursion.

您的解决方案中存在两个问题:首先,基本情况不应返回 0 - 如果我们正在构建一个列表作为答案,那么您必须返回空列表。其次,在递归步骤中,您实际上并没有对列表中的当前元素求平方 - 只需将它与 * 运算符相乘即可。

关于scheme - 简单方案,对列表中的所有元素进行平方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13003081/

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