gpt4 book ai didi

scheme - 将项目列表乘以某个数字 'x'

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

您将如何编写一个程序,将列表的每个元素与给定的数字 (x) 相乘。如果我给出一个列表 '(1 2 3) 并且 x=3,该程序应返回 (3 6 9)

我的尝试:

(define (mul-list list x)
(if (null? list)
1
(list(* x (car list))(mul-list (cdr list)))))

上面的代码似乎不起作用。我必须做哪些更改?请帮忙

提前致谢。

最佳答案

这是教科书示例,您应该在其中使用 map ,而不是重新发明轮子:

(define (mul-list lst x)
(map (lambda (n) (* x n)) lst))

但我猜您想从头开始实现它。您的代码存在以下问题:

  • 您不应将 list 称为参数,因为它与同名的内置过程(您当前正在尝试使用的过程)冲突!
  • 假设我们正在构建一个列表作为输出,基本情况应该返回一个空列表
  • 我们通过cons元素构建列表,而不是通过调用list
  • 你忘记将第二个参数传递给mul-list的递归调用

这应该可以修复所有错误:

(define (mul-list lst x)
(if (null? lst)
'()
(cons (* x (car lst))
(mul-list (cdr lst) x))))

无论哪种方式,它都按预期工作:

(mul-list '(1 2 3) 3)
=> '(3 6 9)

关于scheme - 将项目列表乘以某个数字 'x',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39822470/

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