如何在javascript上生成递归函数而不超过最大调用堆栈大小错误?
我想用javascript实现相同的robot walk函数,但它得到了调用堆栈大小错误如何在javascript上生成递归函数而不超过最大调用堆栈大小错误?,javascript,Javascript,我想用javascript实现相同的robot walk函数,但它得到了调用堆栈大小错误 功能行走(米){ 如果(仪表
功能行走(米){
如果(仪表<0){
计数=0;
}否则,如果(meter由于您的复杂性是指数级的,它将超过调用堆栈大小,您可以使用内存化来解决您的问题,这有助于将指数级时间复杂性转换为多项式复杂性,现在此代码以O(100)运行
让obj={};
功能步行(米){
如果(仪表<0){
计数=0;
}
否则如果(obj[仪表]!=未定义){
返回obj[仪表];
}否则,如果(测量)预期结果是什么?链路中的预期输出是行驶给定距离的所有可能组合-但是,此代码输出单个值,因此如果下面的答案正确(并且看起来确实正确),则甚至不接近要求-那么您的输出将是1.803963808151009e+26行组合-您有多少时间?很抱歉误解。是的,您是对的。变量“count”表示“步行100米需要多少步行模式”@kphex查看我们如何知道预期结果?您可以尝试验证较小的值,但只有OP可以验证100
function walk(meter) {
if(meter < 0) {
count = 0;
} else if(meter <= 2) {
count = meter;
} else if(meter == 3) {
count = walk(meter-1)+walk(meter-2)+1;
} else {
count = walk(meter-1)+walk(meter-2)+walk(meter-3);
}
return count;
}
console.log(walk(100));