Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript上生成递归函数而不超过最大调用堆栈大小错误?_Javascript - Fatal编程技术网

如何在javascript上生成递归函数而不超过最大调用堆栈大小错误?

如何在javascript上生成递归函数而不超过最大调用堆栈大小错误?,javascript,Javascript,我想用javascript实现相同的robot walk函数,但它得到了调用堆栈大小错误 功能行走(米){ 如果(仪表

我想用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));