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

首頁 > 學院 > 開發設計 > 正文

java中的遞歸方法

2019-11-15 00:33:35
字體:
來源:轉載
供稿:網友
java中的遞歸方法

一、含義

遞歸算法是一種直接或間接地調用自身的算法。在計算機編寫程序中,遞歸算法對解決一大類問題是十分有效的,它往往使算法的描述簡潔而且易于理解。

二、例子

99乘法表的例子

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

123456789101112131415package 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乘法表代碼如下:

1234567891011121314151617181920212223package 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循環就執行了一個方法,壓入棧幀一次,只存在一個棧幀,所以比較節省內存。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新建县| 贡嘎县| 南陵县| 晋中市| 神木县| 南通市| 佳木斯市| 山东| 通榆县| 阿鲁科尔沁旗| 油尖旺区| 太保市| 萝北县| 抚宁县| 阿拉善右旗| 泉州市| 突泉县| 大厂| 凉城县| 綦江县| 嫩江县| 忻城县| 栾城县| 如皋市| 颍上县| 河津市| 永和县| 上虞市| 修水县| 宜城市| 田东县| 眉山市| 渝中区| 工布江达县| 呼玛县| 松溪县| 灌云县| 突泉县| 开远市| 开远市| 平和县|