Julia 计算斐波那契数的奇怪结果
我编写了一个小程序,以动态方式高效地计算斐波那契数:Julia 计算斐波那契数的奇怪结果,julia,Julia,我编写了一个小程序,以动态方式高效地计算斐波那契数: function fib3(n) if n < 2 return n else a = 0 b = 1 c = 0 for i=2:n c = a + b a = b b = c end return b end end for n
function fib3(n)
if n < 2
return n
else
a = 0
b = 1
c = 0
for i=2:n
c = a + b
a = b
b = c
end
return b
end
end
for n=1:110
println(n,"\t",fib3(n))
end
有什么问题?与类型有关的内容?尝试在“最小和最大可表示值”下找到适当的范围:
显然,您的安装是64位的,正如该页面所说,默认情况下,文本是Int64,当发生溢出时,您会观察到“环绕行为”。换句话说,46600466103735530309+7540113804746346429超出了有符号64位整数(2)表示的最大值⁶³-1)因此序列中的下一个数字显示为负数。这仍然是一个斐波那契数,但模为2⁶⁴ 并环绕到负域。尝试在“最小和最大可表示值”下找到合适的范围:
显然,您的安装是64位的,正如该页面所说,默认情况下,文本是Int64,当发生溢出时,您会观察到“环绕行为”。换句话说,46600466103735530309+7540113804746346429超出了有符号64位整数(2)表示的最大值⁶³-1)因此序列中的下一个数字显示为负数。这仍然是一个斐波那契数,但模为2⁶⁴ 如果要计算大整数,请使用
BigInt
s。如果要计算大整数,请使用BigInt
s。
90 2880067194370816120
91 4660046610375530309
92 7540113804746346429
93 -6246583658587674878
94 1293530146158671551
95 -4953053512429003327
96 -3659523366270331776
97 -8612576878699335103
98 6174643828739884737
99 -2437933049959450366
100 3736710778780434371