问题描述
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# 中也存在同样的情况。