Functional programming SML斐波那契大数

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 $

我试着写我自己的fib函数,它适用于大数(超过50),但我没有运气。首先,我尝试了显而易见的解决方案,但结果很快就解决了。我的下一个解决办法是

    $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”呢?