我编写了一个简短的递归函数,每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;