簡體   English   中英

如何在沒有最大調用堆棧大小超出錯誤的情況下在javascript上執行遞歸函數?

[英]How to make recursive function on javascript without Maximum call stack size exceeded error?

我想使用javascript制作相同的機器人漫游功能,但會出現調用堆棧大小錯誤。

http://www.chegg.com/homework-help/questions-and-answers/robot-take-steps-1-2-3-meters-write-program-allows-shows-possible-steps-robot-take-使用-R-q3756383

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM