![](/img/trans.png)
[英]javascript recursive function: Uncaught RangeError: Maximum call stack size exceeded
[英]How to make recursive function on javascript without Maximum call stack size exceeded error?
我想使用javascript制作相同的機器人漫游功能,但會出現調用堆棧大小錯誤。
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));
由於您的復雜度是指數級的,因此它將超過調用堆棧的大小,您可以使用備忘錄來解決問題,這有助於將指數級時間復雜度轉換為多項式,現在此代碼在O(100)中運行
let obj = {}; function walk(meter) { if(meter < 0) { count = 0; } else if(obj[meter] != undefined){ return obj[meter]; } 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); } obj[meter] = count; return count; } console.log(walk(100));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.