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輪回就履行了一個辦法,壓入棧幀一次,只存在一個棧幀,所以比擬節儉內存。
迎接狠狠的拍磚。直到砸暈。