菲波那切数列是每一个学C语言的人都特别熟悉的一个问题。
可以使用斐波那契数列解决的一系列问题:跳台阶问题(一次跳一级/二级)。用小矩形横着或竖着去覆盖更大的矩形。
思路:
方式一: 用递归实现的过程中会出现重复计算的情况,此时,
方式二:可以利用动态规划的思想,保存中间结果,这样可以避免不必要的计算。
public class Test09 {
//传统的递归算法的求解
public long fibnacci(int n){
if (n<=0) {
return 0;
}else if(n==1) {
return 1;
}
return fibnacci(n-1)+fibnacci(n-2);
}
//改进方式:将中间项保存起来,不重复相同操作
public long fibnacciB(int n){
long one=1;
long zero=0;
long reslut=n;
for (int i = 2; i <=n; i++) {
reslut=one+zero;
zero=one;
one=reslut;
}
return reslut;
}
public static void main(String[] args) {
int n = 3;
Test09 test09=new Test09();
System.out.println(test09.fibnacci(4));
System.out.println(test09.fibnacciB(4));
}
}