当前位置:优学网  >  在线题库

这算不算尾递归优化?

发表时间:2022-06-17 15:04:16 阅读:450
function heartBeat(context) {
  context.data.timer = setTimeout(() => {
    doSomeThing();
    heartBeat(context);
  }, 1000);
}

heartBeat(this); //this是一个类似Vue实例的东西

其中的context是一个类似于Vue实例的东西。请教这个递归有问题吗?需不需要尾递归优化?

🎖️ 优质答案
  • 这个不是尾递归。也无法进行尾递归优化。这只是普通的递归。

  • 这根本不是递归,更扯不上什么尾递归优化,就是个回调函数

    名词这东西理解了才有用

  • 尾递归的判断条件是,该函数的最后一句是递归调用。

    题中 heartBeat 函数中的最后一句是 context.data.timer = ... 这个赋值语句,不是递归调用它自己。

    下面这种形式才是尾递归。

    function heartBeat(context) {
        // 做一些奇怪的事情,跟 heartBeat 无关
        heartBeat(context);
    }

    已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。

  • 相关问题