JavaScript语言的递归编程
关于递归的解释见《SICP》第1章。下面是个简单的递归编程题目。
题目:从1累加一直加到100的和是多少?
非递归的循环写法:
1
run: function() {
2
var sum = 0;
3
for(var i=1;i<=100;i++) {
4
sum = sum + i;
5
}
6
console.log(sum);
7
}
run: 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));
这样的写法便于学习。以上是线性递归,作为递归入门的话还行,算法的性能效率就烂了些,不作考虑。


浙公网安备 33010602011771号