Maison > Article > interface Web > Explication détaillée de l'utilisation de la récursivité JS
La fonction appelle la fonction elle-même, qui est une récursion. La récursion doit avoir une condition de fin
function f1() { console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:"); f1(); }; f1();//浏览器崩溃,因为没有结束条件——死循环 改进如下: var i=0; function f1() { i++; if (i<5){ f1(); } console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:"); }; f1();
Tutoriels d'apprentissage associés : tutoriel javascript
Implémentation récursive : Trouver la somme de n nombres n=5 ------->5+4+3+ 2 +1 Processus d'exécution : Quelques autres : La la fonction appelle la fonction elle-même, qui est la récursivité. , la récursion doit avoir une condition de fin Implémentation récursive : trouver la somme de n nombres n=5 ------ ->5+4+3+2+1 Processus d'exécution : Quelques autres : Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!//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));
Le code exécute getSum(5)—>Entrez la fonction, x à ce moment est 5 et 5+getSum est exécuté (4), à ce moment le code attend
à ce moment 5+getSum(4), le code ne calcule pas en premier, exécute getSum(4) en premier, entre dans la fonction, exécute 4+getSum(3) , attend, exécute en premier Qu'est-ce que getSum(3), entrez la fonction, exécutez 3+getSum(2), attendez, exécutez getSum(2) d'abord, entrez la fonction, exécutez 2+getSum(1); 1) d'abord, exécutez Le jugement de x==1 renvoie 1, donc,
Le résultat de getSum(1) à ce moment est 1, commencez à sortir
2+getSum(1) Le résultat à ce moment le temps est : 2+1
Exécution :
getSum(2)---->2+1
3+getSum(2) Le résultat à ce moment est 3+2+1
4+getSum(3) à ce moment Le résultat est 4+3+2+1
5+getSum(4) Le résultat à ce moment est 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));
Récursion :
function f1() {
console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:");
f1();
};
f1();//浏览器崩溃,因为没有结束条件——死循环
改进如下:
var i=0;
function f1() {
i++;
if (i<5){
f1();
}
console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:");
};
f1();
Petite châtaigne :
//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));
Le code exécute getSum( 5)—>Entrez la fonction, x à ce moment est 5, ce qui est exécuté est 5+getSum(4), à ce moment le code attend
à ce moment 5+getSum(4), le code fait ne calcule pas en premier, exécute d'abord getSum(4), entre dans la fonction et exécute 4+ getSum(3), attends, exécute d'abord getSum(3), entre dans la fonction, exécute 3+getSum(2), attends, exécute getSum( 2) d'abord, entrez la fonction, exécutez 2+getSum(1);attendez,d'abord Lorsque getSum(1) est exécuté, le jugement de x==1 est exécuté, renvoie 1, donc,
Le résultat de getSum( 1) à ce moment est 1, et il commence à s'éteindre
2+getSum(1) Ceci Le résultat à ce moment est : 2+1
Exécution :
getSum(2)---- >2+1
3+getSum(2) Le résultat à ce moment est 3+2+1
4+getSum(3) Le résultat à ce moment est 4+3+2+1
5+getSum(4) Le résultat à ce moment est 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));