題目:從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));
這樣的寫法便於學習。以上是線性遞歸,作為遞歸入門的話還行,算法的性能效率就爛了些,不作考慮。