国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java中的遞歸詳解(用遞歸實現99乘法表來講解)

2019-11-26 15:14:34
字體:
來源:轉載
供稿:網友

1:普通實現99乘法表太簡單,是個程序員都會,實現如下:

package test.ms;public class Test99 {   public static void main(String[] args) {   for(int i=1; i<=9;i++){   for(int j=1; j<=i; j++){   System.out.print(j+" * "+i+ " = "+(i*j) +" ");   }   System.out.println();  }}  }

2:用遞歸方式實現 99乘法表
代碼如下:

package test.ms;public class MultiTable { public static void main(String args[]) {     m(9);   }    /**    * 打印出九九乘法表    * @param i    */   public static void m(int i) {     if (i == 1) {       System.out.println("1*1=1 ");     } else {       m(i - 1);       for (int j = 1; j <= i; j++) {         System.out.print(j + "*" + i + "=" + j * i + " ");       }       System.out.println();     }   }  }

遞歸的方式調用圖示:

每一個方法的調用都會產生一個棧幀,壓入到方法棧,當遞歸調用的時候,方法棧中棧幀的圖示和上圖類似。
去掉方法中棧幀的引用關系更加直觀:如下圖所示:

簡化掉相應的方法調用最后執行情況如上圖所示,注意 i 一直在變  j每次都是從1開始 然后遞增到和i相等。
這樣上圖依次出棧后就得到了 99 乘法表:

總結:

嵌套for循環 和  用遞歸實現 的比較:

棧 主要是用來存放棧幀的,每執行一個方法就會出現壓棧操作,所以采用遞歸的時候產生的棧幀比較多,遞歸就會影響到內存,非常消耗內存,而使用for循環就執行了一個方法,壓入棧幀一次,只存在一個棧幀,所以比較節省內存。

歡迎狠狠的拍磚。直到砸暈。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 象州县| 神池县| 南京市| 丹江口市| 张掖市| 盐城市| 丹阳市| 兰考县| 叶城县| 胶南市| 台前县| 通许县| 闻喜县| 宝坻区| 宜兰市| 伊宁市| 察隅县| 六枝特区| 峡江县| 吴桥县| 宁津县| 都匀市| 遂昌县| 金沙县| 焦作市| 蓝山县| 镇康县| 灵台县| 鄂伦春自治旗| 大关县| 雷州市| 三明市| 疏勒县| 京山县| 乌拉特后旗| 长武县| 宁河县| 卓尼县| 宜阳县| 克东县| 乌什县|