中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

九龙城区| 霍林郭勒市| 同心县| 庆安县| 新密市| 松滋市| 连云港市| 诸城市| 清新县| 武鸣县| 额济纳旗| 谢通门县| 日照市| 正蓝旗| 桦南县| 佛冈县| 天津市| 沂南县| 灌阳县| 印江| 财经| 福建省| 蕉岭县| 祥云县| 长沙县| 吐鲁番市| 始兴县| 朝阳区| 收藏| 麻城市| 商南县| 汝南县| 游戏| 盖州市| 乐陵市| 东山县| 玉田县| 大渡口区| 进贤县| 海原县| 滁州市|