教你如何寫遞歸

遞歸算法是最讓初級程序員頭疼的一個算法,那麼具體要怎麼寫遞歸呢,讓我來教你,跟我來吧。

思路

  1. 寫出結果表達式
  2. 確定單次循環
  3. 確定結束條件

實戰

題目:算階乘 n!

按照上面的思路分析
1.結果表達式: 1+2+3+4+....n
2.確定單次循環
假設一個函數f(n)可以完成這件事情則
f(2) = 1+2
這樣表達式就變成 f(2)+3+4+....n,因此有
f(3) = f(2)+3
f(4) = f(3)+4
到這裏就可以寫出函數結構了

public function factorial($n) {
    return factorial($n-1) + $n;
}

但這樣不行,因爲沒有結束條件,函數會一直循環下去
3.確定結束條件
本例子中 結束條件是1 所以f(1)的結果應該爲1
加入到函數中

public function factorial($n) {
    if($n == 1) {
        return 1;
    }
    return factorial($n-1) + $n;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章