要將JavaScript遞歸函數轉換為迭代形式,您可以使用循環結構(如for循環或while循環)以及一個棧來存儲待處理的函數調用。以下是一個示例,展示了如何將遞歸的階乘函數轉換為迭代形式:
遞歸版本:
function factorial(n) {
if (n === 0 || n === 1) {
return 1;
}
return n * factorial(n - 1);
}
迭代版本:
function factorialIterative(n) {
let result = 1;
const stack = [];
stack.push(n);
while (stack.length > 0) {
const current = stack.pop();
result *= current;
if (current > 1) {
stack.push(current - 1);
}
}
return result;
}
在這個例子中,我們使用了一個棧來存儲函數調用。每次迭代時,我們從棧中彈出一個數字,將其乘以結果變量,然后將數字減1(如果它大于1),并將其推回棧中。這個過程會一直持續到棧為空,此時我們完成了遞歸函數的迭代轉換。