I've written a short recursive function to add blank entries every 30 minutes to a dataset. As far as I can tell, the function should be tail-recursive, but it seems to cause a stack overflow.
Just looking at it, I can't work out what I've done wrong. Any advice would be welcome.
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>