溫馨提示×

如何將js遞歸函數轉換為迭代形式

js
小樊
105
2024-10-16 02:35:56
欄目: 編程語言

要將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),并將其推回棧中。這個過程會一直持續到棧為空,此時我們完成了遞歸函數的迭代轉換。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女