题目:
如果一对兔子每月生一对兔子;一对新生兔,从第二个月起就开始生兔子;
假定每对兔子都是一雌一雄,试问一对兔子,第 n 个月能繁殖成多少对兔子?
分析一下,可以知道这应该使用函数的callee实现,因为JavaScript中函数不能直接实现自调用,所以使用arguments.callee来委婉实现;
分析规律,可知,第一个月是1,之后是2,3,5,8….,可以知道下一个月的数量是上两个月的数字之和,有了思路,就可以实现了;
var result = [];
function fn(n){
if(n==1){
//典型的斐波那契数列
return 1;
}else if(n==2){
if(result[n]){
return result[n];
}else{
return 2;
}
}else{
//argument.callee()表示 fn()
result[n]=arguments.callee(n-1)+arguments.callee(n-2);
}
return result[n];
}
调用:
fn(3)
3
fn(4)
5