斐波纳契数列【fibonacci】

查找斐波纳契数列中第 N 个数。


所谓的斐波纳契数列是指:

前2个数是 0 和 1 。
第 i 个数是第 i-1 个数和第i-2 个数的和。
斐波纳契数列的前10个数字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...


实现两种方式:

1。递归:实现相对简单,但递归运行效率低,产生的时间复杂度为指数阶O(2^n),即2的n次方;

public class Solution {
    /**
     * @param n: an integer
     * @return: an ineger f(n)
     */
    public int fibonacci(int n) {
        // write your code here
        if(n==1){
            return 0;
        }

        if(n==2){
            return 1;
        }
        return fibonacci(n-1)+fibonacci(n-2);
    }
}


2。非递归:运用数组计算,避免无限递归;产生的时间复杂度为线性阶O(n).;

public class Solution {
    /**
     * @param n: an integer
     * @return: an ineger f(n)
     */
    public int fibonacci(int n) {
          // write your code here
         if(n==1){
             return 0;
         }
         if(n==2){
             return 1;
         }
         
         int[] ary =new int[n];
         ary[0]=0;
         ary[1]=1;
         for(int i=3;i<=n;i++){
             ary[i-1]=ary[i-2]+ary[i-3];
         }
         return ary[n-1];
    }
}

你可能感兴趣的:(算法(Arithmetic))