欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中的遞歸詳解(用遞歸實(shí)現(xiàn)99乘法表來講解)

 更新時(shí)間:2015年03月28日 10:08:54   投稿:junjie  
這篇文章主要介紹了Java中的遞歸詳解(用遞歸實(shí)現(xiàn)99乘法表來講解),本文給出了普通的99乘法實(shí)現(xiàn)方法和用遞歸實(shí)現(xiàn)的方法,并對比它們的不同,體現(xiàn)出遞歸的運(yùn)用及理解,需要的朋友可以參考下

1:普通實(shí)現(xiàn)99乘法表太簡單,是個(gè)程序員都會(huì),實(shí)現(xiàn)如下:

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:用遞歸方式實(shí)現(xiàn) 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(); 
    } 
  }  
}

遞歸的方式調(diào)用圖示:

每一個(gè)方法的調(diào)用都會(huì)產(chǎn)生一個(gè)棧幀,壓入到方法棧,當(dāng)遞歸調(diào)用的時(shí)候,方法棧中棧幀的圖示和上圖類似。
去掉方法中棧幀的引用關(guān)系更加直觀:如下圖所示:

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

總結(jié):

嵌套for循環(huán) 和  用遞歸實(shí)現(xiàn) 的比較:

棧 主要是用來存放棧幀的,每執(zhí)行一個(gè)方法就會(huì)出現(xiàn)壓棧操作,所以采用遞歸的時(shí)候產(chǎn)生的棧幀比較多,遞歸就會(huì)影響到內(nèi)存,非常消耗內(nèi)存,而使用for循環(huán)就執(zhí)行了一個(gè)方法,壓入棧幀一次,只存在一個(gè)棧幀,所以比較節(jié)省內(nèi)存。

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

相關(guān)文章

最新評論