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);//遞歸的規律

                      }

            }

    }

相關文章
相關標籤/搜索