gpt4 book ai didi

lambda - 在Scheme中使用map和lambda计算点积

转载 作者:行者123 更新时间:2023-12-02 07:08:05 27 4
gpt4 key购买 nike

计算两个向量vw的点积。我的想法是获得向量中第一项的乘积,并使用累积函数将它们全部加在一起。

 (define (dot-product v w)
(accumulate + 0 (map (lambda(v,w)(* (car v) (car w))) (list v w))))

我不明白为什么这不起作用:

 (dot-product (list 1 2) (list 3 4)) //output is 12, not the 11 that I anticipated

我认为我很难理解 map 函数在这种情况下的工作原理,谢谢您的解释。

最佳答案

您调用map的方式不会达到预期的效果。给出 (list v w) 列表意味着您的函数被调用两次,一次使用 v,一次使用 w(无论有多少项)每个列表都有)。

相反,请执行以下操作:

(define (dot-product v w)
(apply + (map * v w)))

在这里,您将两个列表传递给 map,这意味着它将使用两个参数调用您的函数(在本例中为 *):每个给定的列表一个。

关于lambda - 在Scheme中使用map和lambda计算点积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32337659/

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