Java 递归算法

1.递归算法基本思路:java

  Java递归算法是基于Java语言实现的递归算法。递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法实质是把问题分解成规模缩小的同类问题的子问题,而后递归调用方法表示问题的解。递归每每能给咱们带来很是简洁很是直观的代码形式,从而使咱们的编码大大简化,然而递归的思惟确实跟咱们的常规思惟相逆的,一般都是从上而下的思惟问题,而递归趋势从下往上的进行思惟。算法

2.递归算法解决问题的特色:函数

  • 递归就是方法里调用自身
  • 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口
  • 递归算法代码显得很简洁,但递归算法解题的运行效率较低。因此不提倡用递归设计程序。
  • 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易形成栈溢出等,因此通常不提倡用递归算法设计程序。

  在作递归算法的时候,必定把握出口,也就是作递归算法必需要有一个明确的递归结束条件。这一点是很是重要的。其实这个出口就是一个条件,当知足了这个条件的时候咱们就再也不递归了。this

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 ));
     }
 
}

 代码执行流程图以下:spa

此程序中n=5就是程序的出口。设计

相关文章
相关标签/搜索