2017-06-12 133 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与皮亚诺数表示。在这种情况下,添加是用后继函子写的。

相关问题