function countup(n) {
if (n < 1) {
return [];
} else {
const countArray = countup(n - 1);
countArray.push(n);
return countArray;
}
}
console.log(countup(5));
到目前為止,我知道通過我將 countArray 設定為它決定呼叫自己直到 n = 0 的函式。那時它會向 countArray 回傳一個空陣列,但我只是不明白在那點之后會發生什么,這會給出排序數字的這種奇怪結果,我認為它只會將 N 的當前值為 0 的值推送到陣列中,但是顯然不是...
有誰知道這里發生了什么?
uj5u.com熱心網友回復:
由于 if 條件,0 不會被推送到陣列。此時,您的 countArray 設定為 []。
當使用遞回解釋器時,需要一種方法來理解這些函式的處理順序。
當您的腳本第一次運行時,解釋器會創建一個全域執行背景關系并將其推送到執行堆疊。
一旦完成,引擎首先執行其執行背景關系位于堆疊頂部的函式。在你的情況下 n=1。它將它壓入陣列,從堆疊中彈出,然后繼續 n=2,依此類推,直到到達堆疊中的最后一個 n=5
function countup(n) {
if (n < 1) {
return [];
} else {
const countArray = countup(n - 1);
console.log(n)
countArray.push(n);
return countArray;
}
}
console.log(countup(5));
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/328816.html
標籤:javascript 功能 递归 返回
