JS遞迴的用法JavaScript遞迴)

2021-08-28 04:17:43 字數 1482 閱讀 8312

函式中用呼叫函式自己,此時就是遞迴,遞迴一定要有結束條件

function f1() ;

f1();//瀏覽器崩潰,因為沒有結束條件——死迴圈

改進如下:

var i=0;

function f1()

console.log("從前有座山,山里有個廟,廟裡有個老和尚給小和尚講故事:");

};f1();

遞迴實現:求n個數字的和 n=5 ------->5+4+3+2+1

//for 迴圈寫法:

var sum=0;

for (var i=0;i<=5;i++)

console.log(sum);

----------------------分割線---------------------------

function getsum(x)

return x+getsum(x-1);

};var sum1=getsum(5);

console.log(sum1);

console.log(getsum(10));

執行過程:

**執行getsum(5)—>進入函式,此時的x是5,執行的是5+getsum(4),此時**等待

此時5+getsum(4),**先不進行計算,先執行getsum(4),進入函式,執行的是4+getsum(3),等待, 先執行的是getsum(3),進入函式,執行3+getsum(2),等待,先執行getsum(2),進入函式,執行 2+getsum(1);等待, 先執行getsum(1),執行的是x==1的判斷,return 1,所以,

此時getsum(1)的結果是1,開始向外走出去

2+getsum(1) 此時的結果是:2+1

執行:getsum(2)---->2+1

3+getsum(2) 此時的結果是3+2+1

4+getsum(3) 此時的結果是4+3+2+1

5+getsum(4) 此時的結果是5+4+3+2+1

結果:15
再來幾個:

//遞迴案例:求乙個數字各個位數上的數字的和:  123   --->6 ---1+2+3

//523

function geteverysum(x)

//獲取的是這個數字的個位數

return x%10+geteverysum(parseint(x/10));

}console.log(geteverysum(1364));//5

//遞迴案例:求斐波那契數列

function getfib(x)

return getfib(x-1)+getfib(x-2);

}console.log(getfib(12));

遞迴的用法

遞迴是一種方法內呼叫自身方法的一種程式設計技術,像一些階乘 求和等數學問題可以實現,不過複雜度會提高,最能體現遞迴之美的當屬漢諾塔問題。同樣我們用遞迴實現了斐波那契數列和三角數字。漢諾塔問題 如下圖所示,要求將乙個座上的盤子全部搬運到最後乙個支柱上,有乙個輔助支柱。搬運規則 1.一次只能移動一張盤子...

遞迴的幾種用法

以前一直對遞迴發怵,一想到它就 渾身哆嗦 但是遞迴確實是非常精髓和精妙的,有時候處理問題會非常的方便。比如排序,遍歷目錄下的檔案什麼的,但是老這麼怕他也不是個辦法.先看乙個排序的 現有122345六個數,要求用乙個main函式實現所有不同的排序並列印出來,要求 4不能在第三位,3和5不能相連 某公司...

模式匹配演算法以及KMP的javascript實現

暴力解決 對主串的每乙個字元作為子串開頭,與要匹配的字串進行匹配。對主串作大迴圈,每個字元開頭做t的長度的小迴圈,直到匹配成功或全部遍歷完為止。function index s,t else if j t.length else function getnext t else return next...