JavaScript 語言的遞歸編程
更新時間:2010年05月18日 23:02:16 作者:
關(guān)于遞歸的解釋見《SICP》第1章。下面是個簡單的遞歸編程題目。
題目:從1累加一直加到100的和是多少?
非遞歸的循環(huán)寫法:
1run: function() {
2 var sum = 0;
3 for(var i=1;i<=100;i++) {
4 sum = sum + i;
5 }
6 console.log(sum);
7}
遞歸的寫法:
var testCase = {
sum: 0,
run: function(n) {
if(n>=100) {
return 100;
}
else {
sum = n+ testCase.run(n+1);
return sum;
}
}
};
console.log(testCase.run(1));
上面這種代碼在網(wǎng)上一搜就一大堆,下面的寫法與它等價:
console.log((function(n){
var sum=0;
if(n<=1){
return 1;
}
else{
sum = arguments.callee(n-1)+n;
return sum;
}
})(100));
這樣的寫法便于學(xué)習(xí)。以上是線性遞歸,作為遞歸入門的話還行,算法的性能效率就爛了些,不作考慮。
非遞歸的循環(huán)寫法:
復(fù)制代碼 代碼如下:
1run: function() {
2 var sum = 0;
3 for(var i=1;i<=100;i++) {
4 sum = sum + i;
5 }
6 console.log(sum);
7}
遞歸的寫法:
復(fù)制代碼 代碼如下:
var testCase = {
sum: 0,
run: function(n) {
if(n>=100) {
return 100;
}
else {
sum = n+ testCase.run(n+1);
return sum;
}
}
};
console.log(testCase.run(1));
上面這種代碼在網(wǎng)上一搜就一大堆,下面的寫法與它等價:
復(fù)制代碼 代碼如下:
console.log((function(n){
var sum=0;
if(n<=1){
return 1;
}
else{
sum = arguments.callee(n-1)+n;
return sum;
}
})(100));
這樣的寫法便于學(xué)習(xí)。以上是線性遞歸,作為遞歸入門的話還行,算法的性能效率就爛了些,不作考慮。
相關(guān)文章
JavaScript中如何在一個循環(huán)中等待示例代碼詳解
這篇文章主要介紹了在JavaScript中如何在一個循環(huán)中等待(附代碼示例),下面是如何使用for..of 循環(huán)來迭代一個數(shù)組并在循環(huán)內(nèi)等待,需要的朋友可以參考下2022-08-08
新年快樂! javascript實現(xiàn)超級炫酷的3D煙花特效
這篇文章主要為大家詳細(xì)介紹了javascript實現(xiàn)超級炫酷的3D煙花特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01

