關於java遞歸算法

example: 求5的階乘。。   

如下:

public class Test {  
static int multiply(int n){  
if(n==1||n==0)  
return n;  
else  
return n*multiply(n-1);  
}  

public static void main(String[] args){  
System.out.println(multiply(10));  
}  
} 
 

上面的multiply是一個階乘的例子。其實遞歸遞歸,從字面上解釋就是在方法本身調用自己的方法,或者間接調用;看上面的程序,拿multiply(5)來說: 
n=5;執行 5*multiply(4); 
-------------------- 
這時候看multiply(4) 
n=4 執行 4*multiply(3); 
------------------- 
看multiply(3) 
n=3,執行 3*multiply(2); 
--------------- 
mulitply(2); 
n=2 執行 2*mulitply(1); 
這時候,return 1;往上返回 
2*1向上返回 
3*(2*1)向上返回 
4*(3*(2*1)) 向上返回 
5*(4*(3*(2*1)) ) = 120 
所以程序輸出120; 
這事簡單的遞歸的例子;所以可以看出來遞歸的關鍵得有遞歸出口(本體的If語句),還有遞歸方法; 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章