算法:斐波那契数列

说起斐波那契数列,大家应该都很熟悉了,今天主要想写的是他的算法实现,我最常用的就是递归和循环两种,循环写反大部分人都会,这里主要讲一下递归写法。


概念

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)。

简单来说,从第三个数开始,其值为前两个数的值之和,第一个数和第二个数是一般是0,1或者1,1 。接下来我们通过一个简单的例子去了解一下它。


例子

一列数:1,1,2,3,5,8,13,21,34.....第30位数是什么?用递归算法求解。


递归实现

我们直接带入上方的公式即可,f(30)=f(29)+f(28),依次类推,当f(1)和f(0)时直接返回值1即可,这就是跳出递归的条件了。

int foo(int n)
{
if(n<2) return 1;
else return foo(n-2)+foo(n-1);
}

怎么样,是不是非常的简单,两行代码就解决了。


总结

我们之所以能两行代码解决,归根到底是我们知道斐波那契数列的原理,且有了公式。那么当遇到别的陌生的问题时,我们也应该先分析清楚问题的根本,把我们的逻辑总结好,再根据我们的思路逻辑去解决它哦!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部