Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erläuterung der Verwendung der JS-Rekursion

coldplay.xixi
Freigeben: 2020-06-29 17:46:32
nach vorne
3394 Leute haben es durchsucht

Detaillierte Erläuterung der Verwendung der JS-Rekursion

Rekursion:

Die Funktion ruft die Funktion selbst auf, die eine Rekursion ist.

    function f1() {
        console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:");
        f1();
    };
    f1();//浏览器崩溃,因为没有结束条件——死循环

	改进如下:
	    var i=0;
    function f1() {
        i++;
        if (i<5){
            f1();
        }
        console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:");
    };
    f1();
Nach dem Login kopieren
Nach dem Login kopieren

Verwandte Lern-Tutorials: Javascript-Tutorial

Kleine Kastanie:

Rekursive Implementierung: Ermitteln Sie die Summe von n Zahlen 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));
Nach dem Login kopieren
Nach dem Login kopieren

Ausführungsprozess:
Der Code führt getSum(5) aus –>Geben Sie die Funktion ein, x ist zu diesem Zeitpunkt 5 und 5+getSum ist ausgeführt (4), zu diesem Zeitpunkt wartet der Code
zu diesem Zeitpunkt 5+getSum(4), der Code berechnet nicht zuerst, führt zuerst getSum(4) aus, gibt die Funktion ein, führt 4+getSum(3) aus , wartet, führt zuerst aus Was ist getSum(3), geben Sie die Funktion ein, führen Sie 3+getSum(2) aus, warten Sie, führen Sie zuerst getSum(2) aus, geben Sie die Funktion ein, führen Sie 2+getSum(1) aus, warten Sie, führen Sie getSum(1) aus; 1) Zuerst ausführen Die Beurteilung von x==1 gibt 1 zurück, also
Das Ergebnis von getSum(1) zu diesem Zeitpunkt ist 1, beginnen Sie mit dem Ausgehen
2+getSum(1) Das Ergebnis zu diesem Zeitpunkt Zeit ist: 2+1
Ausführung:
getSum(2)---->2+1
3+getSum(2) Das Ergebnis zu diesem Zeitpunkt ist 3+2+1
4+getSum(3) zu diesem Zeitpunkt Das Ergebnis ist 4+3+2+1
5+getSum(4) Das Ergebnis zu diesem Zeitpunkt ist 5+4+3+2+1

    结果:15
Nach dem Login kopieren

Noch ein paar mehr:

    //递归案例:求一个数字各个位数上的数字的和:  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
Nach dem Login kopieren
 //递归案例:求斐波那契数列

    function getFib(x) {
        if(x==1||x==2){
            return 1
        }
        return getFib(x-1)+getFib(x-2);
    }
    console.log(getFib(12));
Nach dem Login kopieren

Rekursion:

Die Die Funktion ruft die Funktion selbst auf, also eine Rekursion. Die Rekursion muss eine Endbedingung haben n Zahlen n=5 ------ ->5+4+3+2+1

    function f1() {
        console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:");
        f1();
    };
    f1();//浏览器崩溃,因为没有结束条件——死循环

	改进如下:
	    var i=0;
    function f1() {
        i++;
        if (i<5){
            f1();
        }
        console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:");
    };
    f1();
Nach dem Login kopieren
Nach dem Login kopieren
Ausführungsprozess:

Der Code führt getSum( 5) –>Geben Sie die Funktion x zu diesem Zeitpunkt ein. Es ist 5 und was ausgeführt wird, ist 5+getSum(4). Zu diesem Zeitpunkt wartet der Code Zu diesem Zeitpunkt ist 5+getSum(4). , der Code berechnet nicht zuerst, sondern führt zuerst getSum(4) aus, gibt die Funktion ein und führt 4+ getSum(3) aus, wartet, führt zuerst getSum(3) aus, gibt die Funktion ein, führt 3+getSum(2) aus, Warten Sie, führen Sie zuerst getSum(2) aus, geben Sie die Funktion ein, führen Sie 2+getSum(1) aus. Warten Sie, zuerst Wenn getSum(1) ausgeführt wird, wird die Beurteilung von x==1 ausgeführt, 1 zurückgegeben, also Das Ergebnis von getSum(1) ist zu diesem Zeitpunkt 1 und es beginnt auszugehen 2+getSum(1) Dies Das Ergebnis zu diesem Zeitpunkt ist: 2+1

Ausführung:getSum(2 )---->2+13+getSum(2) Das Ergebnis zu diesem Zeitpunkt ist 3+2+1
4+getSum(3) Das Ergebnis zu diesem Zeitpunkt ist 4+3+2 +1
5+getSum(4) Das Ergebnis ist zu diesem Zeitpunkt 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));
Nach dem Login kopieren
Nach dem Login kopieren


Noch ein paar mehr:

    结果:15
Nach dem Login kopieren
    //递归案例:求一个数字各个位数上的数字的和:  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
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung der JS-Rekursion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage