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

作者:半夏时间:2026-10-24 22:11:20浏览:101

本文通过计算从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));

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

作者最新文章