本文主要是介绍斐波那契数列——台阶问题实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题:有个n阶台阶,一次可以走一个台阶,也可以走两个台阶,走到n阶台阶有多少种走法。
分析:遇到这种问题我们很容易想到递归的方法,但是这些数据的之间的关系还需要我们找到一个通项公式。可以采用归纳总结方法找出规律,不难发现这里的规律是a(n)=a(n-1)+a(n-2),算法的背后都有数学理论支撑,所以这里的数学理论就是斐波那契数列。斐波那契数列(
sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
下面介绍两种斐波那契的代码实现:递归和循环
通过递归实现:
private static int func2(int i) {// TODO Auto-generated method stubif(i == 1) {return 1;}if(i == 2) {return 2;}int res = func2(i-1) + func2(i-2);return res;
}
通过循环实现:
private static int func(int i) {// TODO Auto-generated method stubint a=1,b=2;if(i == 1) {return a;}if(i == 2) {return b;}for (int j = 3; j <= i; j++) {b = a+b;a = b-a;}return b;
}
总结:
算法是程序员的必备技能,有简单的,有复杂的,我们可以不创建算法,不去推导算法的实现过程,但是一定要通过代码实现算法,这样才能提高自身的技能素养。
这篇关于斐波那契数列——台阶问题实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!