Java中的遞歸詳解(用遞歸完成99乘法表來說解)。本站提示廣大學習愛好者:(Java中的遞歸詳解(用遞歸完成99乘法表來說解))文章只能為提供參考,不一定能成為您想要的結果。以下是Java中的遞歸詳解(用遞歸完成99乘法表來說解)正文
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輪回就履行了一個辦法,壓入棧幀一次,只存在一個棧幀,所以比擬節儉內存。
迎接狠狠的拍磚。直到砸暈。