究竟什么是Prolog对幂函数的定义。我写了这段代码并且它给出了一些错误我想知道功能函数的确切代码。
pow(X,0,1).
pow(X,Y,Z):-Y1=Y-1,pow(X,Y1,Z1),Z1=Z*X.
此代码有什么问题吗?
答案 0 :(得分:2)
代码存在两个问题。
这是固定代码:
pow(_,0,1).
pow(B,E,R) :- E > 0,!, E1 is E -1, pow(B,E1,R1), R is B * R1.
这是使用累加器的第二个尾递归版本
powa(B,E,R) :- powa(B,E,1,R).
powa(_,0,A,A).
powa(B,E,A,R) :- E > 0, !, E1 is E - 1, A1 is B * A, powa(B,E1,A1,R).
答案 1 :(得分:1)
看看这里 - power function in prolog。出于效率原因,内置的pow谓词没有在prolog中实现 - 正如大多数算术谓词一样。