如何解决prolog 如何能够如此快速地递归执行大型计算操作?像 10000 阶乘
factorial(X,N) :- N = 0,X is 1;
N > 0,N1 is N - 1,factorial(X1,N1),X is X1 * N.
我输入了factorial(X,10000).
,答案是如此准确和快速,这是一个太长的数字。
那么 prolog 是怎么做到的呢?,里面的数字的数据结构是什么?以及如何在 C、C++、C# 和 Java 等语言中实现它?
解决方法
如果您的问题是关于“大数”,则会使用适当的“大数”库。
例如,SWI-Prolog 使用“GNU 多精度库”:
...虽然它不提供“十进制数”(没有人想在 Prolog 中计算货币金额吗?)
OTOH 确实提供非整数有理数:
您将在 C 或 C++ 中进行类似的操作。
对于 Java,请使用标准的 BigInteger
和 BigDecimal
实现。我确定 C# 中也存在同样的情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。