在此数组合并中获取堆栈溢出

时间:2014-11-11 18:40:39

标签: javascript recursion stack-overflow momentjs tail-recursion

我编写了一个简短的递归函数,每30分钟向数据集添加一个空白条目。据我所知,该函数应该是尾递归的,但它似乎会导致堆栈溢出。

只要看着它,我就无法弄清楚我做错了什么。欢迎任何建议。



        function mergeHelper(memo, merge, latestTime) {
          var currentTime = moment(latestTime.subtract(30, "minutes")),
            mergeTime = moment(merge[0]),
            thisElement = [currentTime, 0],
            actualTime;

          if (!merge.length) { //base case
            return memo;
          }

          if (mergeTime.isAfter(currentTime)) { // normal case
            memo.push(merge.pop);
            actualTime = mergeTime.clone();
          } else { // failthrough case
            memo.push(thisElement);
            actualTime = currentTime.clone();
          }
          return mergeHelper(memo, merge, actualTime);
        }

        return mergeHelper([], data, initialTime);

<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.3/moment.js"></script>
&#13;
&#13;
&#13;

0 个答案:

没有答案