最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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使用Hibernate攔截器實現(xiàn)時間自動注入的操作代碼

    SpringBoot使用Hibernate攔截器實現(xiàn)時間自動注入的操作代碼

    這篇文章主要介紹了SpringBoot使用Hibernate攔截器實現(xiàn)時間自動注入的操作代碼,主要包括hibernate攔截器的相關(guān)知識,結(jié)合實例代碼給大家講解的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • SpringMVC攔截器零基礎(chǔ)掌握

    SpringMVC攔截器零基礎(chǔ)掌握

    攔截器(Interceptor)是一種動態(tài)攔截方法調(diào)用的機制,在SpringMVC中動態(tài)攔截控制器方法的執(zhí)行。本文將詳細講講SpringMVC中攔截器的概念及入門案例,感興趣的可以嘗試一下
    2023-03-03
  • 詳解Java中的Lambda表達式

    詳解Java中的Lambda表達式

    這篇文章主要介紹了Java中的Lambda表達式的的相關(guān)資料,文中講解非常詳細,示例代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • SpringBoot使用JavaMailSender實現(xiàn)發(fā)送郵件

    SpringBoot使用JavaMailSender實現(xiàn)發(fā)送郵件

    JavaMailSender是Spring Framework中的一個接口,用于發(fā)送電子郵件,本文主要為大家詳細介紹了SpringBoot如何使用JavaMailSender實現(xiàn)發(fā)送郵件,需要的可以參考下
    2023-12-12
  • 使用SpringCloud Gateway解決跨域問題

    使用SpringCloud Gateway解決跨域問題

    本文給大家介紹了使用SpringCloud Gateway解決跨域問題,Spring Cloud Gateway是一個基于Spring Framework的微服務(wù)網(wǎng)關(guān),使用Spring Cloud Gateway的跨域配置能夠有效管理不同服務(wù)之間的通信,提高系統(tǒng)的可維護性和安全性,需要的朋友可以參考下
    2024-02-02
  • Java開發(fā)中可以防止界面假死的刷新代碼

    Java開發(fā)中可以防止界面假死的刷新代碼

    今天小編就為大家分享一篇關(guān)于Java開發(fā)中可以防止界面假死的刷新代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • java 中復(fù)合機制的實例詳解

    java 中復(fù)合機制的實例詳解

    這篇文章主要介紹了java 中復(fù)合機制的實例詳解的相關(guān)資料,希望通過本文大家能了解繼承和復(fù)合的區(qū)別并應(yīng)用復(fù)合這種機制,需要的朋友可以參考下
    2017-09-09
  • 使用FileReader采用的默認編碼

    使用FileReader采用的默認編碼

    這篇文章主要介紹了使用FileReader采用的默認編碼,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring?Security?過濾器注冊脈絡(luò)梳理

    Spring?Security?過濾器注冊脈絡(luò)梳理

    這篇文章主要介紹了Spring?Security過濾器注冊脈絡(luò)梳理,Spring?Security在Servlet的過濾鏈中注冊了一個過濾器FilterChainProxy,它會把請求代理到Spring?Security自己維護的多個過濾鏈,每個過濾鏈會匹配一些URL,如果匹配則執(zhí)行對應(yīng)的過濾器
    2022-08-08
  • Spring?JDBC使用步驟和事務(wù)管理

    Spring?JDBC使用步驟和事務(wù)管理

    Spring?JDBC是Spring框架用來處理關(guān)系型數(shù)據(jù)庫的模塊,對JDBC的API進行了封裝,這篇文章主要介紹了Spring?JDBC使用步驟和事務(wù)管理,需要的朋友可以參考下
    2023-12-12

最新評論

临泽县| 察隅县| 龙泉市| 吴堡县| 金溪县| 龙门县| 宝坻区| 静乐县| 新巴尔虎左旗| 德保县| 分宜县| 淮南市| 绩溪县| 利津县| 木兰县| 镶黄旗| 晋江市| 武乡县| 喀什市| 万源市| 湖口县| 平乡县| 平陆县| 吉木乃县| 望江县| 马鞍山市| 平遥县| 区。| 大宁县| 华蓥市| 黄山市| 峨山| 东安县| 洛阳市| 北京市| 萝北县| 大渡口区| 汤阴县| 伊宁县| 长垣县| 平凉市|