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)); 这种写法便于初学者理解。以上属于线性递归,作为递归入门示例尚可,但算法的性能效率较低,此处不作深入考量。
作者最新文章
JavaScript闭包与类(Class)的区别及适用场景对比
2026-11-05 15:48:57
JavaScript入门要学ES6吗?let与箭头函数等新特性解析
2026-11-05 14:49:16
JavaScript 8种数据类型详解:基本类型与引用类型的区别
2026-11-05 14:25:15
怎么在JavaScript中使用async/await优化Ajax异步流程
2026-11-05 13:56:15
JavaScript replace回调函数实现动态正则替换逻辑
2026-11-05 13:52:13
相关标签:
