JSにおける再帰実現


再帰関数とは、実行中に関数名で自分自身を呼び出します.
function add(num){return num<0?num:num+add(num-1);}
console.log(add(4));//9
var addCopy = add;
add = null;
console.log(addCopy(4));//  Uncaught TypeError:add is not a function
関数addは、nullの値を付与する前に表面が問題ないように見えるが、関数add()を変数addCopyに保存した後、addnullにセットし、結果として元の関数への参照は一つしか残っていない.addCopy()を実行しなければならないので、addはもう関数ではない.arguments.calleeを使用してこの問題を解決できます.
arguments.calleeは実行中の関数ポインタであり、関数の再帰的呼び出しを可能にするために使用され得る.
再帰的条件を構成する:
  • 子問題は元の問題と同じで、もっと簡単です.
  • 再帰過程において、再帰的な輸出という明確な条件判断の終了が必要である.