`
thunderbow
  • 浏览: 153832 次
  • 性别: Icon_minigender_1
  • 来自: beijing
社区版块
存档分类
最新评论

关于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语句),还有递归方法; 

 

分享到:
评论
4 楼 gembin 2012-04-17  
这个算法数字大点就 java.lang.StackOverflowError 了
3 楼 hugh.wang 2011-10-11  
              
2 楼 lele0103 2011-09-08  
                                   
1 楼 lauphai 2009-10-22  
//递归算法
public class Recursion{

  int result=1;
 
  public int nRecursion(int n){

     // 如果这个数不是一个整数,则向下舍入
      // n = Math.floor(n); 

     if(n>0){

          result=result*n;

          nRecursion(n-1);

       }

       return result;

     }

}

相关推荐

Global site tag (gtag.js) - Google Analytics