1.遞歸算法基本思路:
Java遞歸算法是基於Java語言實現的遞歸算法。遞歸算法是一種直接或者間接調用自身函數或者方法的算法。遞歸算法實質是把問題分解成規模縮小的同類問題的子問題,然后遞歸調用方法表示問題的解。遞歸往往能給我們帶來非常簡潔非常直觀的代碼形式,從而使我們的編碼大大簡化,然而遞歸的思維確實跟我們的常規思維相逆的,通常都是從上而下的思維問題,而遞歸趨勢從下往上的進行思維。
2.遞歸算法解決問題的特點:
- 遞歸就是方法里調用自身
- 在使用遞歸策略時,必須有一個明確的遞歸結束條件,稱為遞歸出口
- 遞歸算法代碼顯得很簡潔,但遞歸算法解題的運行效率較低。所以不提倡用遞歸設計程序。
- 在遞歸調用的過程中系統為每一層的返回點、局部量等開辟了棧來存儲。遞歸次數過多容易造成棧溢出等,所以一般不提倡用遞歸算法設計程序。
在做遞歸算法的時候,一定把握出口,也就是做遞歸算法必須要有一個明確的遞歸結束條件。這一點是非常重要的。其實這個出口就是一個條件,當滿足了這個條件的時候我們就不再遞歸了。
3.代碼示例:
1
2
3
4
5
6
7
8
|
public
class
Factorial {
//this is a recursive function
int
fact(
int
n){
if
(n==
1
)
return
1
;
return
fact(n-
1
)*n;
}
}
|
1
2
3
4
5
6
7
8
9
|
public
class
TestFactorial {
public
static
void
main(String[] args) {
// TODO Auto-generated method stub
Factorial factorial=
new
Factorial();
System.out.println(
"factorial(5)="
+factorial.fact(
5
));
}
}
|
代碼執行流程圖如下:
此程序中n=5就是程序的出口。