2013-12-16 54 views
2

好日子我正在做序言中的算術問題,並且是它的點產品我搜索並發現一堆代碼不等於本書所要求的代碼。它的a/3所以這是我迄今爲止,但我需要總結兩個產品的結果列表。任何暗示應該建議做什麼?點積產品序言/ 3需要SUM暗示提示

dot([HD|TL],[HD2|TL2],Result):- 
     Mul is HD2 * HD, 
     dot(TL,TL2,Mul), 
     Result is Mul + Reuslt2. 
    dot([],[],0). 
+0

親愛的上帝,就是這樣.....我有天試圖弄明白.. ..所以功能保留,變量沒有這樣想>。< – HTLINK

回答

3

你的問題是,你正在使用Mul兩次,你的意思是,一旦使用它,Reuslt2不存在任何地方。也許你的意思是:

dot([], [], 0). 
dot([H1|T1], [H2|T2], Result) :- 
    Prod is H1 * H2, 
    dot(T1, T2, Remaining), 
    Result is Prod + Remaining. 
+0

親愛的上帝,它是.....我有幾天想弄明白....所以功能保留,變量沒有這樣想>< – HTLINK

2

您使用SWI-Prolog的,所以你可以嘗試:

:- use_module(library(lambda)). 
my_dot(L1,L2,R) :- 
    foldl(\X^Y^Z^T^(T is X*Y + Z), L1,L2,0,R). 
+0

親愛的主耶穌基督即時通訊仍然不在模塊xD到達那裏一點一點,但thanx先進技巧;) – HTLINK

+0

lambda.pl可以在那裏找到:http://www.complang.tuwien.ac.at /ulrich/Prolog-inedit/lambda.pl – joel76