> 웹 프론트엔드 > JS 튜토리얼 > JS 재귀 사용법에 대한 자세한 설명

JS 재귀 사용법에 대한 자세한 설명

coldplay.xixi
풀어 주다: 2020-06-29 17:46:32
앞으로
3411명이 탐색했습니다.

JS 재귀 사용법에 대한 자세한 설명

함수는 함수 자체를 호출하는데, 이는 재귀에 종료 조건이 있어야 합니다.
    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
로그인 후 복사


몇 가지 더 :
    //递归案例:求一个数字各个位数上的数字的和:  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();
로그인 후 복사

작은 밤나무:

재귀 구현: 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));
로그인 후 복사

실행 프로세스:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿