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

溫馨提示×

溫馨提示×

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

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

JavaScript遞歸函數的代碼怎么寫

發布時間:2022-02-23 16:55:22 來源:億速云 閱讀:172 作者:iii 欄目:開發技術

這篇文章主要介紹“JavaScript遞歸函數的代碼怎么寫”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“JavaScript遞歸函數的代碼怎么寫”文章能幫助大家解決問題。

遞歸是一種通過迭代解決問題的方法。換句話說,遞歸函數是一個無限重復調用自身的函數(或直到某事停止它)。

 關于遞歸函數的重要知識

每當你選擇使用遞歸函數時,請記住這兩個基本信息。

 信息 1:遞歸不是 IIFE

遞歸函數不同于立即調用函數表達式(IIFE)。

IIFE 會自動調用一次自身。

但是,遞歸函數會在無限時間內自動重復調用自己,或者直到某些東西停止重新調用為止。

 信息 2:遞歸函數需要一個基本情況

為停止遞歸函數的重新調用而編寫的代碼稱為基本情況。

在創建遞歸函數時定義基本情況總是很重要的——這樣函數就不會無休止地運行,從而使瀏覽器崩潰。

 遞歸函數的例子

下面是一個JavaScript代碼,它返回通過函數的遞歸調用返回的所有值串聯countDown()

// Create a recursive function:function countDown(num) {
   // Define the base case of this recursive function:
   if (num < 0) {  return "Recursion Stopped!";
   }
   // Define the recursive case:
   return num + ", " + countDown(num - 1);}// Invoke the countDown() recursive function:countDown(2);// The invocation above will return:"2, 1, 0, Recursion Stopped!"

筆記

在上面的遞歸算法中,countDown(num - 1)代碼使整個函數成為遞歸,因為是代碼使countDown()recall本身重復。

 看看幕后的事件

當我們調用countDown函數并傳入值2(即countDown(2))時,算法開始運行如下:

 第 1 步:檢查是否2小于0

計算機檢查了2我們傳遞給函數num參數的countDown值是否小于0

由于2不小于0,計算機沒有執行if語句的代碼。相反,它跳到if語句之后的下一個代碼——遞歸代碼。

 第二步:執行return語句

跳過if語句后,計算機執行return num + " " + countDown(num - 1)代碼——但num用參數的值(即2替換參數,如下所示:

return num + ", " + countDown(num - 1);return 2 + ", " + countDown(2 - 1);return 2 + ", " + countDown(1);

 第 3 步:僅執行遞歸語句

在上面第 2 步的代碼中,請注意該return命令無法返回任何值,因為該return語句包含countDown(1)調用該countDown函數的遞歸代碼 ( )

因此,在保留return語句的其他部分(即2 + ", " +)的同時,計算機將只執行遞歸代碼(countDown(1))。

換句話說,countDown(1)代碼將countDown在傳入 value 時自動調用該函數1然后,算法將通過檢查是否1小于重新開始運行0

由于1不小于0,計算機跳到遞歸代碼,如下所示:

return 2 + ", " + num + ", " + countDown(num - 1);return 2 + ", " + 1 + ", " + countDown(1 - 1);return 2 + ", " + 1 + ", " + countDown(0);

 第 4 步:僅調用遞歸代碼

再次注意,該return命令(在第 3 步中)不能返回任何值,因為該return語句包含countDown(0)調用該countDown函數的遞歸代碼 ( )

因此,在保留return語句的其他部分(即2 + ", " + 1 + ", " +)的同時,計算機將只執行遞歸代碼(countDown(0))。因此,countDown(0)代碼將countDown在傳入 value 時自動調用該函數0

然后,該函數將通過檢查是否0小于重新開始運行0

由于0不小于0,計算機跳到遞歸代碼,如下所示:

return 2 + ", " + 1 + ", " + num + ", " + countDown(num - 1);return 2 + ", " + 1 + ", " + 0 + ", " + countDown(0 - 1);return 2 + ", " + 1 + ", " + 0 + ", " + countDown(-1);

 第五步:只執行遞歸代碼

再說一次,該return命令(在第 4 步中)不能返回任何值,因為該return語句包含一個遞歸代碼 ( countDown(-1)) 來調用該countDown函數。

因此,在保留return語句的其他部分(即2 + ", " + 1 + ", " + 0 + ", " +)的同時,計算機將只執行遞歸代碼(countDown(-1))。因此,countDown(-1)代碼將countDown在傳入 value 時自動調用該函數-1

然后,該函數將通過檢查是否-1小于重新開始運行0

此時,-1小于0因此,計算機將if通過返回值來執行語句的代碼,“Recursion Stopped!”如下所示:

return 2 + ", " + 1 + ", " + 0 + ", " + "Recursion Stopped!";

最后,該return語句現在具有可以有效連接和返回的值。因此,從的返回值countDown將是:

"2, 1, 0, Recursion Stopped!"

關于“JavaScript遞歸函數的代碼怎么寫”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

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

AI

正阳县| 潼关县| 沙湾县| 隆回县| 搜索| 曲沃县| 威宁| 马关县| 鹤峰县| 河西区| 唐河县| 涞水县| 孝感市| 顺义区| 木兰县| 湘乡市| 广州市| 文水县| 尖扎县| 温泉县| 稷山县| 金秀| 宁夏| 邵阳县| 桐柏县| 卢湾区| 浦东新区| 灵寿县| 高雄县| 涞源县| 甘泉县| 石门县| 肇东市| 遂宁市| 马关县| 通许县| 吉林市| 天门市| 尖扎县| 乌兰浩特市| 临桂县|