計算兩個向量v
和w
的點積。我的想法是得到向量中第一項的產物,並使用累積函數將它們加在一起。使用map和lambda計算dot-product計劃
(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
功能在這種情況下是如何工作的,謝謝你的任何解釋。
謝謝!對不起,我仍然對一件事感到困惑:是不是要通過(list v w)中的每個元素去映射?爲什麼這個函數只能被調用兩次? – user3366240
@ user3366240'(list v w)'是兩個元素的列表(第一個元素是'v',第二個元素是'w')。 –
謝謝,這很有道理。但是你知道12是如何計算的嗎?當兩次調用的樂趣應該是3. – user3366240