java学习笔记03----递归算法

举报
jason635 发表于 2019/09/30 23:49:13 2019/09/30
【摘要】 25.1 递归算法 A方法调用B方法,我们很容易理解!递归就是:A方法调用A方法!就是自己调用自己,因此我们在设计递归算法时,一定要指明什么时候自己不调用自己。否则,就是个死循环!---尚学堂老高扯淡语录25.1.1 递归算法要点 递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是“自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己。利用递归可以...

25.1 递归算法

    A方法调用B方法,我们很容易理解!递归就是:A方法调用A方法!就是自己调用自己,因此我们在设计递归算法时,一定要指明什么时候自己不调用自己。否则,就是个死循环!

---尚学堂老高扯淡语录

25.1.1 递归算法要点

    递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是自己调用自己,一个使用递归技术的方法将会直接或者间接的调用自己。

利用递归可以用简单的程序来解决一些复杂的问题。比如:大多数排序使用的就是递归算法。

递归结构包括两个部分:

    1.    定义递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环。

    2.    递归体。解答:什么时候需要调用自身方法。

25.2 课堂代码

/**

 * 测试递归算法

 * @author 尚学堂高淇www.bjsxt.cn

 *

 */

public class TestRecursion {

    static int a = 0;

    public static void test01(){

    a++;

    System.out.println("test01:"+a);

    if(a<=10){  //递归头

    test01();

    }else{      //递归体

    System.out.println("over");

    }

}

public static void test02(){

    System.out.println("TestRecursion.test02()");

}

public static long factorial(int n){

    if(n==1){

    return 1;

    }else{

    return n*factorial(n-1);

    }

}

public static void main(String[] args) {

    test01();

    System.out.println(factorial(10));  

    }

 课堂代码中阶乘代码的调用执行过程,参见下图,可以放大看:

10.png


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。