Heim > Artikel > Web-Frontend > Detaillierte Erläuterung der Verwendung der JS-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();
Verwandte Lern-Tutorials: Javascript-Tutorial
Rekursive Implementierung: Ermitteln Sie die Summe von n Zahlen n=5 ------->5+4+3+ 2 +1 Ausführungsprozess: Noch ein paar mehr: 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 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 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!//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));
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
//递归案例:求一个数字各个位数上的数字的和: 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));
Rekursion:
function f1() {
console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:");
f1();
};
f1();//浏览器崩溃,因为没有结束条件——死循环
改进如下:
var i=0;
function f1() {
i++;
if (i<5){
f1();
}
console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:");
};
f1();
Ausführungsprozess:
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));
Noch ein paar mehr: 结果: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