91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中遞歸和循環的優劣勢

發布時間:2021-08-27 21:31:43 來源:億速云 閱讀:176 作者:chen 欄目:編程語言

這篇文章主要講解了“Java中遞歸和循環的優劣勢”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java中遞歸和循環的優劣勢”吧!

循環:當滿足某一條件時反復執行某一操作(循環體)。

遞歸:在一個方法內部對自身進行調用的方法。

遞歸結構包括兩個部分:

  1、遞歸頭:即什么時候不調用自身方法,也就是遞歸的結束條件。如果沒有遞歸頭,程序將陷入死循環。

  2、遞歸體:即什么時候需要調用自身方法。

好了,廢話不多說,直接來擼代碼(計算階乘的方法)。

package com.bjwyj.method;
/**
 * 遞歸和循環的比較
 * @author 吳永吉
 *
 */
public class TestRecursion {
 public static void main(String[] args) {
 //以下調用System下的currentTimeMillis()方法只是為了說明遞歸調用比循環調用更耗時
 long l1 = System.currentTimeMillis(); 
 System.out.println(factorial(5));
 long l2 = System.currentTimeMillis();
 System.out.println("遞歸計算階乘耗時:"+(l2-l1));
 
 System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
 long time1 = System.currentTimeMillis();
 System.out.println(factorialLoop(5));
 long time2 = System.currentTimeMillis();
 System.out.println("循環計算階乘耗時:"+(time2-time1));
 }
 
 //使用遞歸定義計算階乘的方法
 public static long factorial(int num) {
 if(num==1) { //遞歸頭
 return 1;
 }else {
 return num*factorial(num-1); //遞歸體
 }
 }
 
 //使用循環定義計算階乘的方法
 public static long factorialLoop(int n) {
 int result = 1; //接收計算結果
 while(n>1) {
 result *= n*(n-1); //實現計算結果的累乘操作
 n -= 2; //每次減去2,實現數字的迭代操作
 }
 return result;
 }
}

執行結果:

120
遞歸計算階乘耗時:1
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
120
循環計算階乘耗時:0

由結果可以看出,使用遞歸算法比使用循環算法更耗時。

為了更好地比較遞歸算法的優劣,上述采用while循環與遞歸算法進行對比。

總結:

棧,主要是用來存放棧幀的,每執行一個方法就會出現壓棧操作,所以采用遞歸的時候產生的棧幀比較多,遞歸就會影響到內存,非常消耗內存。而使用循環就執行了一個方法,壓入棧幀一次,只存在一個棧幀,所以比較節省內存。

感謝各位的閱讀,以上就是“Java中遞歸和循環的優劣勢”的內容了,經過本文的學習后,相信大家對Java中遞歸和循環的優劣勢這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高台县| 南丹县| 奇台县| 永修县| 红安县| 汶上县| 嘉善县| 富阳市| 武强县| 日喀则市| 玛纳斯县| 安宁市| 平邑县| 奈曼旗| 龙里县| 博客| 南部县| 泽州县| 沐川县| 抚顺县| 六盘水市| 精河县| 正蓝旗| 盐城市| 文山县| 景洪市| 仁布县| 马龙县| 通山县| 电白县| 宜城市| 宁化县| 砀山县| 徐州市| 阿尔山市| 北辰区| 柯坪县| 荣昌县| 潜山县| 台北市| 永福县|