fantasticDream

递归结构

递归结构

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

递归结构包括两个部分:

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

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

Recursion就是递归的含义 

package mypro01; 

public class TestRecursion {

//  static可以被下面的方法共享

    static int a=0;   

    public static void test01() {

        a++;

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

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

            test01();

        }else {//递归体

            System.out.println("over");

        }      

        //test01()调用自己出现栈溢出 死循环 如果要调用自己需要写明什么时候不调了

    }

   

    public static void test02() {

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

    }

    public static void test03() {

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

    }

//  5!  5的阶乘

    public static long factorial(int n) {

        // n==5  n-1

//                  5

//                      4

//                          3

//                              2

//                                  1

 

//      此处先返回 n*factorial(n-1) 依次递归

//      当n==1时直接进入if语句

//      然后再一次进行计算结果

//      1*2=2(结果)

//          (结果)2*3

//              (结果)6*4

//                  (结果)24*5  

//                      最后返回结果120

//      方法调用自己需要写明什么时候不调了

//      从大到小,阶乘调用

        if(n==1) {//n等于1是结束调用

            return 1;

        }else{//n不等于1时继续调用

            return n*factorial(n-1);

        }

    }   

    public static void main(String[] args) {

       //调用递归方法

        test01();

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

    }

}

posted on 2022-05-14 22:47  神奇的梦  阅读(173)  评论(0)    收藏  举报

导航