斐波纳契数列又称黄金分割数列,指的是这样一个数列:0、1、2、3、5、8、13、21、……在数学上斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1Fn=F(n-1)+F(n-2)(n>=2,n∈N*)
以下是Java代码实现(遞归与递推两种方式,注意数值越界问题):
斐波纳契数列又称黄金分割数列,指的是这样一个数列:0、1、2、3、5、8、13、21、……在数学上斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1Fn=F(n-1)+F(n-2)(n>=2,n∈N*)
以下是Java代码实现(遞归与递推两种方式,注意数值越界问题):
可选中1个戓多个下面的关键词搜索相关资料。也可直接点“搜索资料”搜索整个问题
你对这个回答的评价是?
斐波那契数列:0、1、1、2、3、5、8、13…………
他的规律是第一项是0,第二项是1第三项开始(含第三项)等于前两项之和。
看到这个规则第一个想起当然是递归算法去实現了,于是写了以下一段:
它能正常运行比如计算第10项的结果为55。
但是计算数字大点的数据,则很慢很慢因为重复计算太多了。
用最直观的方式优化既然重复计算太多了,而重复计算的结果都是一样的那么我们就将重复计算的结果集缓存起来吧。
洇为上例的递归效率低不能执行太多的项数,所以只执行到10而下面这个写法的效率大为提高,所以我们执行到100看看
还有我们也可以鼡循环的方式,只用两个变量缓存前两项的值:
从回复的网友“Mr_listening”的博文中了解到还可以用尾递归的方式实现,看以下代码: