1.阶乘的时候,函数一般要用到递归算法,所以函数内部一定会调用自身
//递归,阶乘 function sum(num){ if (num<=1) { return 1; } else{ return num*sum(num-1); //自己调用自己,递归 } } alert(sum(4));
2.如果函数名一旦发生改名,所需要跟着一起修改不仅仅是在调用的时候,在内部递归的时候也会跟着一起修改,如果在函数内部有很多此递归,这时修改起来就很麻烦,如果有一个地方没修改,其结果都会出错,这时候就用到arguments.calle(),递归,自己调用自己
function box(num){ if (num<=1) { return 1; }else{ return num*arguments.callee(num-1); } } alert(box(4)); //其结果和上面的一样