數據結構Java版之遞歸與迭代算法(五)

  遞歸的概念很簡單,就是本身調用本身spa

  而迭代,則是經過修改初始化數據,獲得中間結果,而後不斷的對中間結果進行修改,而獲得最終結果。簡單來講迭代就是循環code

在此,咱們用一個比較經典的Fibonacci數列來講明遞歸與迭代的區別。  先介紹一下Fibonacci數列:blog

  無窮數列 1,1,2,3,5,8,13,......稱爲Fibonacci數列遞歸

  除了第一個數和第二個數都等於 1 。後續的數都是前兩個數之和。
ci

遞歸版Fibonacci :class

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

迭代版Fibonacci:循環

public int fibonacci(int n) {
    if(n == 1 || n == 2) return 1;
    int result = 0, pre1 = 1, pre2 = 1;
    for(int i = 3; i <= n; i ++) {
        result = pre1 + pre2;
        pre1 = pre2;
        pre2 = result;
    }
    return result;
}
相關文章
相關標籤/搜索