JavaScript 递归与循环实现累加对比

作者:半夏

时间:2026-10-24

浏览:100

本文通过计算从1累加到100的例子,对比了JavaScript中非递归循环与线性递归的实现方式。详细解析了基于对象方法的递归写法以及利用arguments.callee的匿名函数递归技巧,并指出线性递归在算法性能上的局限性,适合递归入门学习。

文章目录

JavaScript 递归与循环实现累加对比

题目要求计算从1累加一直加到100的总和。



首先展示非递归的循环写法。


具体代码实现如下:

 
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));

上述代码在网络上较为常见,以下写法与其逻辑等价:


具体代码实现如下:

 
console.log((function(n){
var sum=0;
if(n<=1){
return 1;
} 
else{
sum = arguments.callee(n-1)+n;
return sum;
} 
})(100));

这种写法便于初学者理解。以上属于线性递归,作为递归入门示例尚可,但算法的性能效率较低,此处不作深入考量。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章