2017-06-12 142 views
1

是否有可能用「add」謂詞(或者只是X is Y + Z)做「pow」?
我有這樣的:pow(X,Y,Z)<=> Z = X^Y加上

pow(0,1,1). 
pow(_,0,1). 
pow(X,Y,Z) :- Y1 is Y - 1, pow(X,Y1,Z1), Z is Z1 * X. 

,但我想也使其「+」(只是爲了練習)像3^2 = 3 * 3 = 3 + 3 + 3

+1

那你可以用加法來寫乘法...... –

+0

'pow(X,Y,Z): - Z是X^Y + 0。 – false

回答

1

你可以寫在另外的方面乘法(mul/3)。像:

pow(0,1,1). 
pow(_,0,1). 
pow(X,Y,Z) :- 
    Y > 1, 
    Y1 is Y - 1, 
    pow(X,Y1,Z1), 
    mul(Z1,X,Z). %% originally: Z is Z1 * X. 

mul(0,_,0). mul(I,A,R) :- I > 0, I1 is I-1, mul(I1,A,R1), R is R1 + A.

通常一個基本的鍛鍊是寫此外乘法功率 predictates與皮亞諾數表示。在這種情況下,添加是用後繼函子寫的。

相關問題