java中递归算法是什么怎么算的?

java中递归算法是什么怎么算的?,第1张

一、递归算法基本思路:

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。这个东西你叫做递归出口也行,叫防止死循环也行,理解了含义就行


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12296395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存