再来看看这个代码
$fib = Hash.new{|h,n| n<2 ? h[n]=n : h[n]=h[n-1]+h[n-2]}
def fib(n)
(1/5 ** 0.5) * (((1 + 5 ** 0.5)/2) ** n - ((1 - 5 ** 0.5)/2) ** n)
end最大支持到 1474, fib(1475) 就会出现 Infinity
而且 fib(71).to_i == $fib[71]
当算到72的时候
fib(72).to_i = 498454011879265
$fib[72] = 498454011879264
显然在乘方运算出现了误差。
欢迎提出意见~