题目
写一个函数,输⼊入n,求斐波那契数列的第n项 (一只⻘青蛙一次可以跳上1级台阶,也可以跳上2级。求该⻘青蛙跳上一个n级台阶总共有多少种跳法)
解题
从下往上计算,首先根据f(0)和f(1)算出f(2),再根据f(1)和f(2)算出f(3)…以此类推就可以算出第n项了。时间复杂度为O(n).
代码
private static long fibonaci(int n){
long[] a = {0,1};
if(n<2)
return a[n];
long fibone = 0;
long fibtwo = 1;
long fibN = 0;
for(int i = 2;i<=n;i++){
fibN = fibone + fibtwo;
fibone = fibtwo;
fibtwo = fibN;
}
return fibN;
}
//时间复杂度比较高的简单方法
private static int getfib(int n){
if(n == 0&&n == 1&&n == 2)
return n;
return getfib(n-1)+getfib(n-2);
}
ps:
简单方法因为重复计算太多,所以造成时间复杂度比较高