亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

平利县| 陇西县| 南投市| 宝丰县| 新余市| 杭锦后旗| 平远县| 宝山区| 余姚市| 静海县| 汝州市| 文昌市| 漯河市| 固原市| 望都县| 积石山| 德阳市| 秦安县| 佛坪县| 大姚县| 新竹市| 永登县| 巫山县| 应城市| 肇州县| 南靖县| 新源县| 永春县| 沂源县| 彭泽县| 龙陵县| 湖北省| 宿松县| 涞水县| 政和县| 永仁县| 泊头市| 宜城市| 恩施市| 武宣县| 百色市|