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

  这样的写法便于学习。以上是线性递归,作为递归入门的话还行,算法的性能效率就烂了些,不作考虑。