0
值(如果回報來形容它正確的字我不SUR,但是這是最好的一個,我可以找到。)如何使一個Prolog程序返回它計算
我想寫一個prolog中的一個小程序,它使用函數add來進行乘法運算。當我自己運行add或者甚至在函數測試中調用結果時,結果是「Z = sum」ex:如果我運行add(2,3,Z),它將顯示Z = 5。 我的問題是,當我打電話給mult時,我無法讓它做同樣的事情。我發現的唯一解決方案是使用寫入,但這不是一回事。我嘗試了很多東西,但其中大部分都沒有編譯,其餘部分都沒有改變。有人知道我怎麼能做到這一點(「Z =產品」)?一般情況下,爲什麼要這樣做(返回)?
謝謝
add(X,Y,Z) :-
Z is X + Y.
mult(X,Y,Z1):-
multiply(X,Y,0).
multiply(_,0,_):-
write(0).
multiply(0,_,Z):-
write(Z).
multiply(X,Y,Z):-
X > 0,
add(Y,Z,Z1),
X1 is X - 1,
multiply(X1,Y,Z1).
multiply(X,Y,Z):-
Y < 0,
X1 is abs(X),
Y1 is abs(Y),
multiply(X1,Y1,Z).
multiply(X,Y,Z):-
Y1 is Y * -1,
add(Y1,Z,Z1),
X1 is X + 1,
multiply(X1,Y,Z1).
test(X,Y,Z1):-
add(X,Y,Z1).
'乘(X,Y,Z1): - Z1爲X * Y' –
'MULT(X,Y,Z1): - 乘(X,Y,0).'請問這個規則意思?這似乎不合邏輯。 – lurker
那麼用戶稱它爲mult(2,3,Z),其中Z應該是存儲產品的變量。所以我將Z初始化爲零,以便向其中添加Y X次並獲得產品。 – itachi737