java(基础)— 方法(递归)

A:定义:编程

        方法调用自身。递归

B:递归二要素内存

       B1:必须找到递归的出口,否则就是 死递归,死递归就是错误class

       B2:必须找到递归的计算规律变量

       eg: 5!=5*4*3*2*1方法

C:使用递归的注意事项static

       C1:递归的次数不能太多,不然形成栈内存溢出错误

       C2:递归有可能会形成结果过大,超过执行类型的最大值范围,所得结果可能形成并非最终想要的结果。return

Demo:void

一、    

    //利用方法计算阶乘

    class FangFaJieCheng{

            public static void main(String[] args){

                      //调用这个阶乘的方法

                      int sun = JiCheng(5);

                      System.out.println("最终结果是:"+sun);

            }

            public static int JiCheng(int i){

                      //利用if结构来完成阶乘的运算

                      if(i==1){

                            return 1;//递归出口,结束方法

                      }else{

                            return i*JiCheng(i-1);//递归的规律

                    }

             }

       }

二、    

    /*

    在编程中,常常要用到变量的传递

    基本类型的变量在传递的时候,传递的是基本类型的值,改变一个变量不会影响其余的变量

    */

    public class Main{

            public static void main(String[] args){

                      /*

                     int i =10;

                     int j =i; //把i值赋值给j;也就是把10赋值给j

                     i = 100;

                     System.out.println("i="+i+",j="+j);

                    */

                    //------------------------------

                    /*

                    int i = 10;

                    change(i);

                    System.out.println("i="+i);

            }

            public static void change(int i){

                      i = 20;

            }

            */

            //调用递归方法

            int res = sun(4);

            System.out.println("res="+res);

        }

        /*错误的递归 没有 终止条件

        public static int errSun(int num){

                  return num + errSun(num-1);

        }        

        */

        public  static int  sun(int num){

                   if(num==1){

                            return 1;

                    }else{

                           return num + sun(num-1);

                    }

            }

     }

三、// 1!+2!+3!

     class FangFaJieCheng{

            public static void main(String[] args){

                      //调用这个阶乘的方法

                      int sun = JiCheng(4);

                     System.out.println("最终结果是:"+sun); // 结果 33

            }

            public static int JiCheng(int i){

                      //利用if结构来完成阶乘的乘积的加法运算

                     if(i==1){

                            return 1;//递归出口,结束方法

                    }else{

                           return JiCheng(i-1)+ JiCheng2(i);//递归的规律

                    }

            }

            public static int JiCheng2(int i){

                      //利用if结构来完成阶乘的运算

                      if(i==1){

                            return 1;//递归出口,结束方法

                      }else{

                           return i*JiCheng2(i-1);//递归的规律

                      }

            }

    }

相关文章
相关标签/搜索