JavaScript 語言的遞歸編程
更新時間:2010年05月18日 23:02:16 作者:
關于遞歸的解釋見《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));
這樣的寫法便于學習。以上是線性遞歸,作為遞歸入門的話還行,算法的性能效率就爛了些,不作考慮。
非遞歸的循環(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));
這樣的寫法便于學習。以上是線性遞歸,作為遞歸入門的話還行,算法的性能效率就爛了些,不作考慮。
相關文章
Nuxt默認模板、默認布局和自定義錯誤頁面的實現(xiàn)
這篇文章主要介紹了Nuxt默認模板、默認布局和自定義錯誤頁面的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-05-05Google Map V3 綁定氣泡窗口(infowindow)Dom事件實現(xiàn)代碼
無法在infowindow里面添加的div進行綁定事件處理,官方的API,發(fā)現(xiàn)了google.maps.InfoWindow下面的Events里面有個domready事件2013-04-04