遞歸算法是最讓初級程序員頭疼的一個算法,那麼具體要怎麼寫遞歸呢,讓我來教你,跟我來吧。
思路
- 寫出結果表達式
- 確定單次循環
- 確定結束條件
實戰
題目:算階乘 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;
}