斐波纳契的诡异问题

斐波纳契的诡异问题

这是公认的最快的斐波纳契数列ruby算法

[Copy to clipboard] [ - ]
好奇妙的用法

错误原因应该是嵌套太深了,

fib = Hash.new{|h,n| n<2 ? h[n]=n : h[n]=h[n-1]+h[n-2]}

puts fib.size >> 0 说明刚定义的时候fib里面没有任何值

fib[4000]

puts fib.size >> 4001 这时候,fib这个hash里面已经有4001个值了(包括 fib[0])

fib[5000]

这时不用递归到 0 ,只要递归到 4000 就行,所以没有出错。
以上只是我的个人理解,真要分析清楚估计要去看 ruby 的源码了。

ps 刚才试出4396是极限
递归总是很吓人的。不递归也挺快的。

[Copy to clipboard] [ - ]
再来看看这个代码

[Copy to clipboard] [ - ]
这是程序是在那些编辑器上输入的的,看上去挺好的