js 斐波那契数列实现
function fibonacci( n ){
return ( n <= 2 ) ? 1 : fibonacci( n-1 ) + fibonacci( n-2 );
}
function fib(n){
if(n==1||n==2){
return 1;
}
return fbnq(n-1)+fbnq(n-2);
}
fbnq(10);
function fibonacci( n ){
return ( n <= 2 ) ? 1 : fibonacci( n-1 ) + fibonacci( n-2 );
}
function fib(n){
if(n==1||n==2){
return 1;
}
return fbnq(n-1)+fbnq(n-2);
}
fbnq(10);
js递归调用
1 function fact(num) { 2 if (num <= 1) { 3 return 1; 4 } else { 5 return num * fact(num - 1); 6 } 7 }
以下代码可导致出错:
1 var anotherFact = fact; 2 fact = null; 3 alert(antherFact(4)); //出错
由于fact已经不是函数了,所以出错。
用arguments.callee可解决问题,这是一个指向正在执行的函数的指针,arguments.callee返回正在被执行的对现象。
新的函数为:
1 function fact(num) { 2 if (num <= 1) { 3 return 1; 4 } else { 5 return num * arguments.callee(num - 1); //此处更改了。 6 } 7 } 8 var anotherFact = fact; 9 fact = null; 10 alert(antherFact(4)); //结果为24.