gpt4 book ai didi

math - 序言中的幂函数

转载 作者:行者123 更新时间:2023-12-04 09:38:11 25 4
gpt4 key购买 nike

我的幂函数有什么问题?

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

?- pow(2,3,Z).
ERROR: Out of global stack

最佳答案

您的 Y 不会递减,您不能使用函数之类的谓词。您还必须将 Z 与乘法的结果统一起来。

pow(_,0,1).

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

还有一个内置的幂函数会更快:
pow2(X,Y,Z) :- Z is X**Y.

另请注意, pow 不是最后一次调用,无法优化为仅使用一个堆栈帧。您应该将其重新表述为:
pow3(X,Y,Z) :- powend(X,Y,1,Z),!.

powend(_,0,A,Z) :- Z is A.
powend(X,Y,A,Z) :- Y1 is Y - 1, A1 is A*X, powend(X,Y1,A1,Z).

关于math - 序言中的幂函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1448790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com