本篇文章為大家介紹一下JavaScript遞歸的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。
函數中用呼叫函數自己,此時就是遞歸,遞迴一定要有結束條件
function f1() { console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:"); f1(); }; f1();//浏览器崩溃,因为没有结束条件——死循环 改进如下: var i=0; function f1() { i++; if (i<5){ f1(); } console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:"); }; f1();
遞歸實作:求n個數字的和n=5 ------->5 4 3 2 1
//for 循环写法: var sum=0; for (var i=0;i<=5;i++){ sum+=i; } console.log(sum); ----------------------分割线--------------------------- function getSum(x) { if (x==1){ return 1 } 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) { if(x<10){ return x; } //获取的是这个数字的个位数 return x%10+getEverySum(parseInt(x/10)); } console.log(getEverySum(1364));//5
//递归案例:求斐波那契数列 function getFib(x) { if(x==1||x==2){ return 1 } return getFib(x-1)+getFib(x-2); } console.log(getFib(12));
【推薦學習:javascript高階教學】
以上是JavaScript如何使用遞迴的詳細內容。更多資訊請關注PHP中文網其他相關文章!