function f1() { console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:"); f1(); }; f1();//浏览器崩溃,因为没有结束条件——死循环 改进如下: var i=0; function f1() { i++; if (i<5){ f1(); } console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:"); }; f1();
관련 학습 튜토리얼:
자바스크립트 튜토리얼작은 밤나무:
//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의 판단을 실행하고, 1을 반환하므로,getSum(1)의 결과 이 때 1이면 나가기 시작합니다 2+getSum(1) 이때 결과는 2+1
Execution:
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));
function f1() { console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:"); f1(); }; f1();//浏览器崩溃,因为没有结束条件——死循环 改进如下: var i=0; function f1() { i++; if (i<5){ f1(); } console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:"); }; f1();
//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));
실행 프로세스:
The 코드는 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의 판단이 실행되어 1을 반환하므로, 이때 getSum(1)의 결과는 1이더니 나가기 시작합니다2+getSum(1) 이때의 결과는 :2+1
Execute:
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));
위 내용은 JS 재귀 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!