Functional programming SML斐波那契大数
我试着写我自己的fib函数,它适用于大数(超过50),但我没有运气。首先,我尝试了显而易见的解决方案,但结果很快就解决了。我的下一个解决办法是Functional programming SML斐波那契大数,functional-programming,sml,smlnj,ml,Functional Programming,Sml,Smlnj,Ml,我试着写我自己的fib函数,它适用于大数(超过50),但我没有运气。首先,我尝试了显而易见的解决方案,但结果很快就解决了。我的下一个解决办法是 $fun fib(a:int, b:int, index:int) = if(index = 1) then $ (a+b) $ else $
$fun fib(a:int, b:int, index:int) = if(index = 1) then
$ (a+b)
$ else
$ fib(b, (a+b), index - 1);
不幸的是,这也会溢出。您需要查看,它提供了对任意精度整数的访问 您可以使用
IntInf.fromInt
将Int.Int
转换为IntInf.Int
注意,对于对它们执行的任何操作,都必须使用
IntInf.
而不是Int
对应项。这包括加法之类的东西。您需要看看,它提供了对任意精度整数的访问
您可以使用IntInf.fromInt
将Int.Int
转换为IntInf.Int
注意,对于对它们执行的任何操作,都必须使用
IntInf.
而不是Int
对应项。这包括加法之类的东西。注意,在Poly/ML中,默认情况下,结构Int和IntInf都提供无界(大)整数。由于实现使用了底部的GNU MP库(如果可能的话),以及仍然可以使用的范围内的小机器整数,因此它也非常快。注意,在Poly/ML中,默认情况下,结构Int和IntInf都提供无界(大)整数。由于实现使用了底部的GNU MP库(如果可能的话),并且在仍然可能的范围内使用了小的机器整数,因此它也非常快。那么用IntInf替换“int”呢?那么用IntInf替换“int”呢?