夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            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是一個階乘的例子。其實就是遞歸,從字面上解釋就是在方法本身調(diào)用自己的方法,或者間接調(diào)用;看上面的程序,拿multiply(5)來說:
          n=5;執(zhí)行 5*multiply(4);
          -------------------------------------------------------
          這時候看multiply(4)
          n=4 執(zhí)行 4*multiply(3);
          -------------------------------------------------------
          看multiply(3)
          n=3,執(zhí)行 3*multiply(2);
          -------------------------------------------------------
          mulitply(2);
          n=2 執(zhí)行 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
          主站蜘蛛池模板: 达州市| 黄冈市| 安宁市| 韶关市| 乌拉特中旗| 承德县| 进贤县| 织金县| 广汉市| 洱源县| 全南县| 霍邱县| 沈丘县| 高青县| 淄博市| 宝清县| 延寿县| 威宁| 新竹市| 西乡县| 河池市| 梅州市| 金山区| 司法| 永兴县| 乐清市| 图木舒克市| 浪卡子县| 平邑县| 永吉县| 阳江市| 晋城| 开阳县| 天台县| 民权县| 噶尔县| 凤山市| 汾西县| 高青县| 张家界市| 高陵县|