Javascript尾递归而不是循环

标签 javascript recursion tail-recursion

在 Douglas Crockford 的一次演讲中,他赞成使用尾递归而不是循环。提供了此代码,

function repeat(myFunc) {
  if (myFunc !== undefined) {
    return repeat(myFunc);
  }
}

我想定义一个 myFunc,但不知道静态计数器是否可以在函数调用期间保留其状态或使用全局计数器。但作为 javascript 的新手,我想先问一下。如何在示例中使用它,例如从 10 倒数到 0?谢谢。

最佳答案

您需要在某处调用函数myFunc,并评估结果以进一步调用repeat

function repeat(myFunc) {
    if (myFunc()) {
        repeat(myFunc);
    }
}

var count = 10;

repeat(function () {
    document.write(count + '<br>');
    count--;
    return count >= 0;
});
 

关于Javascript尾递归而不是循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36534992/

相关文章:

javascript - 如何将值动态传递给图表

c# - 在 n 树实现方面需要帮助

scala - 完美数递归面临的问题

c# - 如何将递归算法转换为尾递归算法?

recursion - 迭代过程与递归过程

javascript - 坚持用视频数据保存生成的 blob

javascript - Node.js 16 -> 17 更改了 "localhost"的分辨率?

javascript - 双击 d3 删除路径

algorithm - 求大值 T 的 f(T) 值

sorting - CMD 命令以递归方式列出具有排序顺序的文件夹中的所有文件,而不考虑层次结构中的位置?