是否可以做" 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
答案 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 预测。在这种情况下,添加是使用后继函数编写的。