Cracking the Interview - 遞歸

用最基本的 Fibonacci 數(shù)列就可以說明白了

Java Solution of Fibonacci Number

import java.util.*;
public class Solution {
    //recusive
  /*  public static int fibonacci(int n) {
       if (n == 0)
           return 0;
        else if (n == 1)
            return 1;
            else
            return fibonacci(n-1) + fibonacci(n-2);  
        // Complete the function.
    }
*/
    // non-recusive
    public static int fibonacci(int n){
       int tmp1,tmp2,summary;
       summary = 1;
       tmp1 = 0;
        tmp2 = 1;
        if(n<=1)
            return n;
        for(int i = 2; i < n; i++ ){
            tmp1 = tmp2;
            tmp2 = summary;
            summary = tmp1 + tmp2;
        }
        return summary;
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        scanner.close();
        System.out.println(fibonacci(n));
    }
}

需要注意的是時間復(fù)雜度, 遞歸的時間復(fù)雜度遠(yuǎn)遠(yuǎn)大于非遞歸的時間復(fù)雜度。遞歸的時間復(fù)雜度是 O(n^1.618),空間復(fù)雜度是 O(1)。 而非遞歸的時間復(fù)雜度是 O(n),空間復(fù)雜度是 O(1)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容