#############################################再帰:###
関数は関数自体を呼び出します。これは再帰です。再帰には終了条件が必要です
function f1() { console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:"); f1(); }; f1();//浏览器崩溃,因为没有结束条件——死循环 改进如下: var i=0; function f1() { i++; if (i<5){ f1(); } console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:"); }; f1();
//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) が実行されます。これ コードが待機するときgetSum(2) ---->2 1この時点では 5 getSum(4)、コードは最初に計算を行わず、最初に getSum(4) を実行し、関数に入り、4 getSum(3) を実行し、待機します。最初の実行は getSum( 3)、関数に入り、3 getSum(2) を実行、待機、最初に getSum(2) を実行、関数に入り、2 を実行 getSum(1); 待機、最初に getSum(1) を実行、x== の判定を実行1, return 1 ,したがって、このときの getSum(1) の結果は 1, 出始めます 2 getSum(1) このときの結果は次のとおりです: 2 1
Execution:
结果: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 4 getSum(3) このときの結果は 4 3 2 1 rrreerrree となります。 以上がJS再帰の使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。//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));
2 getSum(1) この時点の結果は次のとおりです: 2 1Execution:getSum (2)---->2 1
3 getSum(2 ) このときの結果は 3 2 1
结果:15