이 글에서는 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의 판단이 실행되고 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
A입니다. 몇 가지 더:
//递归案例:求一个数字各个位数上的数字的和: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!