1 什么是递归?
- 先递进,再回归.
2 递归三大要素
- 明确函数想要什么?
- 寻找递归结束条件.
- 找出函数的等价关系式(规律).
3 实例
3.1 阶乘
- 在数学中,正整数的阶乘是所有小于及等于该数的正整数的积
-
1! = 1
递归结束条件 -
2! = 2*1
---> 2! = 2 * 1! 找出函数的等价关系式 -
3! = 3*2*1
---> 3! = 3 * 2! 找出函数的等价关系式 -
4! = 4*3*2*1
---> 4! = 4 * 3! 找出函数的等价关系式
function factorial(n) {
if (n === 1) {
return 1;
}
return n * factorial(n - 1);
}
3.2 斐波那契数列
- 指的是这样一个数列:0、1、1、2、3、5、8、13、21、34...
- 从第三个数开始,等于前2个数的和.
- f(0) =0,
- f(1)=1,
- f(2)=1 ---> f(0)+f(1)
- f(3)=2, ---> f(1)+f(2)
- f(4)=3, ---> f(2)+f(3)
- f(5)=5 ---> f(3)+f(4)
function Fibonacci(n) {
if (n === 0) {
return 0;
}
if (n === 1 || n === 2) {
return 1;
}
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
3.3 小青蛙跳台阶
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
- n为台阶总数
- f(1)=1 台阶为1时,只有1种跳法
- f(2)=2 台阶为2时,只有2种跳法
- f(3)拆解成 f(2)+f(1) --->3
- f(4)= f(3)+f(2) --->5
- 我们发现这就是斐波那契数列
function jump(n) {
if(n<=2){
return n;
}
return jump(n - 1) + jump(n - 2);
}
本文资源来源
对于递归有没有什么好的理解方法? - 方应杭的回答 - 知乎
https://www.zhihu.com/question/31412436/answer/738989709
对于递归有没有什么好的理解方法? - 帅地的回答 - 知乎
https://www.zhihu.com/question/31412436/answer/683820765
网友评论