问题:有个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 stub
if(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 stub
int 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;
}
总结:
算法是程序员的必备技能,有简单的,有复杂的,我们可以不创建算法,不去推导算法的实现过程,但是一定要通过代码实现算法,这样才能提高自身的技能素养。