夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks

          拿一個階乘的例子來說比較容易理解

          public class Test
          {
              
          public static long multiply(long n)
              
          {
                  
          if (n == 1)
                      
          return n;
                  
          else
                      
          return n * multiply(n - 1);
              }

              
              
          public static void main(String[] args)
              
          {
                  System.out.println(multiply(
          5));
              }

          }

          上面的multiply是一個階乘的例子。其實就是遞歸,從字面上解釋就是在方法本身調用自己的方法,或者間接調用;看上面的程序,拿multiply(5)來說:
          n=5;執行 5*multiply(4);
          -------------------------------------------------------
          這時候看multiply(4)
          n=4 執行 4*multiply(3);
          -------------------------------------------------------
          看multiply(3)
          n=3,執行 3*multiply(2);
          -------------------------------------------------------
          mulitply(2);
          n=2 執行 2*mulitply(1);
          這時候,return 1;往上返回
          2*1向上返回
          3*(2*1)向上返回
          4*(3*(2*1)) 向上返回
          5*(4*(3*(2*1)) ) = 120
          所以程序輸出120;
          這事簡單的遞歸的例子;所以可以看出來遞歸的關鍵得有遞歸出口(本體的If語句),還有遞歸方法.

          posted on 2009-04-29 10:06 HUIKK 閱讀(178) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 开阳县| 太谷县| 本溪| 昔阳县| 桃园市| 德惠市| 类乌齐县| 遂昌县| 安顺市| 台南县| 铁岭县| 高密市| 元谋县| 张家口市| 安顺市| 班玛县| 西和县| 中卫市| 广西| 河东区| 麻阳| 嘉鱼县| 姜堰市| 广灵县| 石阡县| 丹阳市| 巩留县| 洪江市| 科技| 理塘县| 嘉兴市| 弥渡县| 徐水县| 巨野县| 民勤县| 泊头市| 合肥市| 固镇县| 永康市| 深圳市| 潞西市|