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

avatar
作者
筋斗云
阅读量:0

要将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),并将其推回栈中。这个过程会一直持续到栈为空,此时我们完成了递归函数的迭代转换。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!