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

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

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

1:普通實現(xiàn)99乘法表太簡單,是個程序員都會,實現(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:用遞歸方式實現(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)用圖示:

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

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

總結(jié):

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

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

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

相關(guān)文章

  • springboot?publish?event?事件機制demo分享

    springboot?publish?event?事件機制demo分享

    這篇文章主要介紹了springboot?publish?event?事件機制demo,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Spring Boot整合JWT的實現(xiàn)步驟

    Spring Boot整合JWT的實現(xiàn)步驟

    本文主要介紹了Spring Boot整合JWT,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • nexus安裝及配置圖文教程

    nexus安裝及配置圖文教程

    Nexus 是Maven倉庫管理器,通過nexus可以搭建maven倉庫,同時nexus還提供強大的倉庫管理功能,構(gòu)件搜索功能等,文中有非常詳細的圖文介紹,對小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Fastjson 常用API介紹及下載地址(推薦)

    Fastjson 常用API介紹及下載地址(推薦)

    Fastjson是一個Java語言編寫的高性能功能完善的JSON庫。接下來通過本文給大家分享Fastjson 常用API介紹及下載地址,感興趣的朋友一起看看吧
    2017-11-11
  • Springboot 跨域配置無效及接口訪問報錯的解決方法

    Springboot 跨域配置無效及接口訪問報錯的解決方法

    這篇文章主要介紹了Springboot 跨域配置無效及接口訪問報錯的解決方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 記一次線上SpringCloud Feign請求服務(wù)超時異常排查問題

    記一次線上SpringCloud Feign請求服務(wù)超時異常排查問題

    這篇文章主要介紹了記一次線上SpringCloud Feign請求服務(wù)超時異常排查問題,本項目與下游項目均注冊在Eureka上面,對這個1秒就超時感到很迷惑,于是開始查閱底層源碼之旅。需要的朋友可以參考下
    2022-01-01
  • 深入理解注解與自定義注解的一些概念

    深入理解注解與自定義注解的一些概念

    今天給大家?guī)淼奈恼率亲⒔獾南嚓P(guān)知識,本文圍繞著注解與自定義注解的一些概念展開,文中詳細介紹了這些知識,需要的朋友可以參考下
    2021-06-06
  • SpringMVC 通過commons-fileupload實現(xiàn)文件上傳功能

    SpringMVC 通過commons-fileupload實現(xiàn)文件上傳功能

    這篇文章主要介紹了SpringMVC 通過commons-fileupload實現(xiàn)文件上傳,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • SpringBoot如何優(yōu)雅的整合Swagger Api自動生成文檔

    SpringBoot如何優(yōu)雅的整合Swagger Api自動生成文檔

    在多人協(xié)作的開發(fā)過程中,API文檔不僅可以減少等待,也能保證開發(fā)的持續(xù)進行,這篇文章主要給大家介紹了關(guān)于SpringBoot如何優(yōu)雅的整合Swagger Api自動生成文檔的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • SpringBoot 自動掃描第三方包及spring.factories失效的問題解決

    SpringBoot 自動掃描第三方包及spring.factories失效的問題解決

    這篇文章主要介紹了SpringBoot 自動掃描第三方包及spring.factories失效的問題,本文給大家分享最新解決方法,需要的朋友可以參考下
    2023-05-05

最新評論