天天看點

Javascript遞歸函數

遞歸函數是在一個函數通過名字調用自身的情況下構成的。如下:

  function self(num){

  if(num<=1){

     return 1;

    }

  else{

   return num*self(num-1);

  }

}

這是一個經典的求階乘的函數。當在外面調用self(4)是可以得到24 ,但是在下面這種情況下就會出錯:

var another=self;

self=null;

alert(anthor(4));//error

因為将self付給another之後,self變為空,當調用another時還要必須運作self,是以出錯。我們可以通過arguments.callee解決這個問題。

arguments.callee是一個指向正在執行的函數的指針。是以可以改為如下:

function self(num){

   return num*arguments.callee(num-1);