pow(X,Y,Z)<=> Z = X^Y加上
问题描述:
是否有可能用“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
答
你可以写在另外的方面乘法(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与皮亚诺数表示。在这种情况下,添加是用后继函子写的。
那你可以用加法来写乘法...... –
'pow(X,Y,Z): - Z是X^Y + 0。 – false