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í)。以上是線性遞歸,作為遞歸入門的話還行,算法的性能效率就爛了些,不作考慮。
您可能感興趣的文章:
- js中遞歸函數(shù)的使用介紹
- JavaScript的遞歸之遞歸與循環(huán)示例介紹
- JS 樹形遞歸實(shí)例代碼
- JavaScript Array Flatten 與遞歸使用介紹
- JS中遞歸函數(shù)
- 總結(jié)javascript中的六種迭代器
- js數(shù)組的五種迭代方法及兩種歸并方法(推薦)
- javaScript數(shù)組迭代方法詳解
- JS的數(shù)組迭代方法
- 淺談javascript 迭代方法
- JavaScript中的迭代器和生成器詳解
- js 數(shù)組實(shí)現(xiàn)一個類似ruby的迭代器
- Javascript 高性能之遞歸,迭代,查表法詳解及實(shí)例
相關(guān)文章
js實(shí)時監(jiān)聽文本框狀態(tài)的方法
js實(shí)時監(jiān)聽文本框狀態(tài)的方法,這里的方法兼容性不是很好,建議參考腳本之家以前的文章。2011-04-04JavaScript實(shí)現(xiàn)存儲HTML字符串示例
這篇文章主要介紹了JavaScript存儲HTML字符串的具體實(shí)現(xiàn),需要的朋友可以參考下2014-04-04Nuxt默認(rèn)模板、默認(rèn)布局和自定義錯誤頁面的實(shí)現(xiàn)
這篇文章主要介紹了Nuxt默認(rèn)模板、默認(rèn)布局和自定義錯誤頁面的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05Google Map V3 綁定氣泡窗口(infowindow)Dom事件實(shí)現(xiàn)代碼
無法在infowindow里面添加的div進(jìn)行綁定事件處理,官方的API,發(fā)現(xiàn)了google.maps.InfoWindow下面的Events里面有個domready事件2013-04-04