1
- # 1 类似斐波那契数列的递归
2
1
3
- ## 1.1 求斐波那契数列矩阵乘法的方法
2
+ - [ 1 类似斐波那契数列的递归] ( #1 )
3
+ * [ 1.1 求斐波那契数列矩阵乘法的方法] ( #11 )
4
+ * [ 1.2 菲波那切数列可优化为O(logN)时间复杂度] ( #12 )
5
+ + [ 1.2.1 矩阵加快速幂方法] ( #121 )
6
+ - [ 1.2.1.1 矩阵推导] ( #1211 )
7
+ - [ 1.2.1.2 快速幂转化思路] ( #1212 )
8
+ * [ 1.3 递推推广式] ( #13 )
9
+ * [ 1.4 迈楼梯问题] ( #14 )
10
+ * [ 1.5 递推经典例题一] ( #15 )
11
+ * [ 1.6 递推经典例题二] ( #16 )
12
+
13
+ <h1 id =' 1 ' >1 类似斐波那契数列的递归</h1 >
14
+
15
+
16
+ <h2 id =' 11 ' >1.1 求斐波那契数列矩阵乘法的方法</h2 >
4
17
5
18
1、菲波那切数列的线性求解(O(N))的方法非常好理解(一次遍历,N项依赖于N-1项和N-2项)
6
19
9
22
3、求出这二阶矩阵,进而最快求出这个二阶矩阵的N-2次方
10
23
11
24
12
- ## 1.2 菲波那切数列可优化为O(logN)时间复杂度
25
+ < h2 id = ' 12 ' > 1.2 菲波那切数列可优化为O(logN)时间复杂度</ h2 >
13
26
14
- ### 1.2.1 矩阵加快速幂方法
27
+ < h3 id = ' 121 ' > 1.2.1 矩阵加快速幂方法</ h3 >
15
28
16
- #### 1.2.1.1 矩阵推导
29
+ < h4 id = ' 1211 ' > 1.2.1.1 矩阵推导</ h4 >
17
30
18
31
> 由于菲波那切数列是一个严格的递推式,不会发生条件转移。
19
32
63
76
64
77
> 转化为,怎么求多个相同矩阵乘起来,怎么算比较快的问题?我们先思考怎么求一个数乘方怎么算比较快的问题?
65
78
66
- #### 1.2.1.2 快速幂转化思路
79
+ <h4 id =' 1212 ' >1.2.1.2 快速幂转化思路</h4 >
80
+
67
81
68
82
问:怎么快速求出10的75次方的值是多少。
69
83
83
97
84
98
** 在JDK中,Math.power函数的内部,也是这样实现指数函数的(整数次方)**
85
99
86
-
87
- ## 1.3 递推推广式
100
+ <h2 id =' 13 ' >1.3 递推推广式</h2 >
88
101
89
102
如果某一个递推式,` F(N) = c1F(n-1) + C2F(n-2) + ... + czF(N-k) ` k表示最底层减到多少,我们称之为k阶递归式。c1,c2,cz为常数系数,k为常数,那么都有O(logN)的解。系数只会影响到我们的k阶矩阵的不同
90
103
@@ -310,7 +323,7 @@ public class Code01_FibonacciProblem {
310
323
311
324
```
312
325
313
- ## 1.4 迈楼梯问题
326
+ < h2 id = ' 14 ' > 1.4 迈楼梯问题</ h2 >
314
327
315
328
问题描述:小明想要迈到n层台阶上去,可以一次迈一层台阶,可以一次迈两层台阶。问:迈到n层一共可以有多少种方法
316
329
@@ -344,7 +357,7 @@ F(N) = F(n-1) + F(n-3) - F(n-10)
344
357
345
358
==每年,这种问题在面试笔试中大量出现,兔子生乌龟问题,乌龟生兔子问题,等等,层出不穷,都可以用这种方法模型求解==
346
359
347
- ## 1.5 递推经典例题一
360
+ < h2 id = ' 15 ' > 1.5 递推经典例题一</ h2 >
348
361
349
362
题目描述:给定一个数N,想象只有0和1两种字符,组成的所有长度为N的字符串。如果某个字符串,任何0字符的左边都有1紧挨着,认为这个字符串达标,返回有多少达标的字符串
350
363
@@ -362,7 +375,8 @@ F(N) = F(n-1) + F(n-3) - F(n-10)
362
375
f(i) = f(i-1) + f(i-2)
363
376
```
364
377
365
- ## 1.6 递推经典例题二
378
+ <h2 id =' 16 ' >1.6 递推经典例题二</h2 >
379
+
366
380
367
381
题目描述:有一款2行,N列的区域。假设我们只有1* 2大小的瓷砖,我们把该区域填满有多少种方案?
368
382
0 commit comments