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

Javascript 在此数组合并中获取堆栈溢出,javascript,recursion,stack-overflow,momentjs,tail-recursion,Javascript,Recursion,Stack Overflow,Momentjs,Tail Recursion,我编写了一个简短的递归函数,每30分钟向数据集添加一个空白条目。据我所知,函数应该是尾部递归的,但它似乎会导致堆栈溢出 只是看看,我不知道我做错了什么。欢迎提供任何建议 函数mergeHelper(备忘录、合并、最新时间){ var currentTime=时刻(最晚时间减去(30,“分钟”), 合并时间=时刻(合并[0]), thisElement=[currentTime,0], 实际时间; 如果(!merge.length){//基本大小写 返回备忘录; } if(mergeTime.i

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

只是看看,我不知道我做错了什么。欢迎提供任何建议

函数mergeHelper(备忘录、合并、最新时间){
var currentTime=时刻(最晚时间减去(30,“分钟”),
合并时间=时刻(合并[0]),
thisElement=[currentTime,0],
实际时间;
如果(!merge.length){//基本大小写
返回备忘录;
}
if(mergeTime.isAfter(currentTime)){//正常情况
memo.push(merge.pop);
actualTime=mergeTime.clone();
}else{//故障通过案例
memo.push(这个元素);
actualTime=currentTime.clone();
}
返回mergeHelper(备注、合并、实际时间);
}
返回mergeHelper([],数据,初始时间)

您永远不会修改
merge
变量,因此只要在第一次调用
mergeHelper
数据中有数组元素,那么它总是会有一个truthy
length
属性。正因为如此,您从来没有停止递归的语句
memo.push(merge.pop)