您好,登錄后才能下訂單哦!
這篇文章主要介紹“JavaScript遞歸函數的代碼怎么寫”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“JavaScript遞歸函數的代碼怎么寫”文章能幫助大家解決問題。
遞歸是一種通過迭代解決問題的方法。換句話說,遞歸函數是一個無限重復調用自身的函數(或直到某事停止它)。
每當你選擇使用遞歸函數時,請記住這兩個基本信息。
遞歸函數不同于立即調用函數表達式(IIFE)。
IIFE 會自動調用一次自身。
但是,遞歸函數會在無限時間內自動重復調用自己,或者直到某些東西停止重新調用為止。
為停止遞歸函數的重新調用而編寫的代碼稱為基本情況。
在創建遞歸函數時定義基本情況總是很重要的——這樣函數就不會無休止地運行,從而使瀏覽器崩潰。
下面是一個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)
)時,算法開始運行如下:
2
小于0
計算機檢查了2
我們傳遞給函數num
參數的countDown
值是否小于0
。
由于2
不小于0
,計算機沒有執行if
語句的代碼。相反,它跳到if
語句之后的下一個代碼——遞歸代碼。
跳過if
語句后,計算機執行return num + " " + countDown(num - 1)
代碼——但num
用參數的值(即2
)替換參數,如下所示:
return num + ", " + countDown(num - 1);return 2 + ", " + countDown(2 - 1);return 2 + ", " + countDown(1);
在上面第 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);
再次注意,該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遞歸函數的代碼怎么寫”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。