js

如何将js递归函数转换为迭代形式

小樊
82
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
看了该问题的人还看了