Java递归算法是基于Java语言实现的递归算法。递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法实质是把问题分解成规模缩小的同类问题的羡塌兆子问题,然后递归调用方法表示问题的解。递归往往能给我们带来非常简洁非常直观的代码形式,从而使我们的编码大大简化,然而递归的思维兄租确实跟我们的常规思维相逆的,通常都是从上而下的思维问题,而递归趋势从下往上的进行思维。
二、递归算法解决问题的特点:
【1】递归就是方法里调用自身。
【2】在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
【3】递归算法代码显得很简洁,但递归算法解题的运行效率较低。所以不提倡用递归设计程序。
【4】在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储。递归次衫慎数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。
【5】在做递归算法的时候,一定把握出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口就是一个条件,当满足了这个条件的时候我们就不再递归了。
三、代码示例:
public class Factorial {//this is a recursive function
int fact(int n){
if (n==1) return 1
return fact(n-1)*n
}
} 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就是程序的出口。
可能术语比较高大上一点。。递归出口就是终止条件,也就是防止死循环敏迹,或者说做到哪一步就可以了。
public void m(int a){m(a)
}
这样写就是无限循环,你总要有个困拿燃条件让他不要继续调用吧,比如说每次a=a-1,当a=0时就不汪虚再调用m。这个东西你叫做递归出口也行,叫防止死循环也行,理解了含义就行
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)