文章目录
递归
何为递归?程序反复调用自身即是递归,
我们需要关心的主要是以下三点:
- 整个递归的终止条件。
- 一级递归需要做什么?
- 应该返回给上一级的返回值是什么?
因此,也就有了我们解递归题的三部曲:
- 找整个递归的终止条件:递归应该在什么时候结束?
- 找返回值:应该给上一级返回什么信息?
- 本级递归应该做什么:在这一级递归中,应该完成什么任务?
一定要理解这3步,这就是以后递归秒杀算法题的依据和思路。
但这么说好像很空,我们来以题目作为例子,之后再解这种套路递归题都能直接秒了
- 写一个函数,实现n的阶乘
function mul(n){
if(n==1||n=0){
return 1 ;
}
return n*mul(n-1);
}
mul()
n!=n*(n-1)!//规律
mul(5)=5*mul(4)
mul(4)=4*mul(3)
mul(3)=3*mul(2)
mul(2)=2*mul(1)
mul(1)=1
- 写一个函数,实现斐波那契数列
function fb(n){
if(n==1||n==2){
return 1;
}
return fb(n-1)+fb(n-2);
}
fb()
fb(n)==fb(n-1)+fb(n-2)//规律
fb(5)==fb(4)+fb(3)
fb(4)==fb(3)+fb(2)
fb(3)==fb(2)+fb(1)
fb(2)==1
fb(1)==1