递归的思维方式
找出递归结构(借助第 n − 1 n-1 n−1步来解决第 n n n步) → \rightarrow →建立递推公式
递归和归纳,只是方向不同。“从一般性前提退出个别性结论”的是递归的思想。而“从个别性前提推出一般性结论”的是归纳的思想。
阶乘
n ! = { 1 , ( n = 0 时 ) n × ( n − 1 ) ! , ( n = 1 , 2 , 3 , ⋯ 时 ) n!=\begin{cases} 1, & (n=0时) \\ n \times (n-1)!, & (n=1,2,3, \cdots 时) \end{cases} n!={1,n×(n−1)!,(n=0时)(n=1,2,3,⋯时)
上面这个定义之所以能成立,下面两个方面缺一不可:
- 阶乘 n ! n! n!由阶乘 ( n − 1 ) ! (n-1)! (n−1)!来定义
- n = 0 n=0 n=0时的阶乘结果确定为1
斐波那契数列
问:有一种动物,它出生2天后就开始以每天1只的速度繁殖后代。假设在第1天有1只这样的动物(该动物刚出生,从第3天起繁殖后代)。那么到第 n n n天,这样的动物共有多少只?
解:在第 n n n天,
- 第 n − 1 n-1 n−1天出生的动物,在第 n n n天都还活着
- 第 n − 2 n-2 n−2天以前出生的动物,在第 n n n天会繁殖1个后代
若设第
n
n
n天的动物总是为
F
(
n
)
F(n)
F(n),则
F
(
n
)
=
{
0
,
(
n
=
0
时
)
1
,
(
n
=
1
时
)
F
(
n
−
1
)
+
F
(
n
−
2
)
,
(
n
=
2
,
3
,
4
,
⋯
时
)
F(n)=\begin{cases} 0, & (n=0时) \\ 1, & (n=1时) \\ F(n-1)+F(n-2), & (n=2, 3, 4, \cdots 时) \end{cases}
F(n)=⎩
⎨
⎧0,1,F(n−1)+F(n−2),(n=0时)(n=1时)(n=2,3,4,⋯时)
将结果排列成数列可得:
0
,
1
,
1
,
2
,
3
,
5
,
8
,
13
,
21
,
34
,
55
,
89
,
⋯
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, \cdots
0,1,1,2,3,5,8,13,21,34,55,89,⋯
即斐波那契数列
递归的其他例子
杨辉三角
其实杨辉三角就是组合数:
即:
C
n
k
=
C
n
−
1
k
−
1
+
C
n
−
1
k
C_n^k=C_{n-1}^{k-1}+C_{n-1}^{k}
Cnk=Cn−1k−1+Cn−1k
谢尔平斯基三角形
它其实就是将杨辉三角中的奇数和偶数分别上黑白2种颜色的结果: