pow(X,Y,Z)< => Z = X ^ Y加

时间:2017-06-12 09:51:13

标签: prolog add pow

是否可以做" pow"用"添加"谓词(或只是X is Y + Z)?
我做到了:

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

但我也希望用#34; +" (仅用于练习),如3^2 = 3 * 3 = 3 + 3 + 3

1 个答案:

答案 0 :(得分: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.

通常,基本练习是使用 Peano数字表示编写添加乘法 power 预测。在这种情况下,添加是使用后继函数编写的。