# my-note-algorithm **Repository Path**: too8g/my-note-algorithm ## Basic Information - **Project Name**: my-note-algorithm - **Description**: 数据结构与算法 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-07-21 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ``` 今天忽然想到的,for/while一般工程代码里都用作遍历了,遍历一个集合。 在算法上,更多的是多做递推, 就是已知初始值,然后按照一定规则,一步一步往后推,每一步计算都依赖前一步的结果,最终推出最后结果 而递归呢,是直接拿最终结果的公式往回套,一层一层的,最终得到的是一个复杂的公式,但是公式中的每个项都是已知的初始值 也可以理解为一层一层往下探,直到最下面有已知值了,再往上返,计算机会缓存中间结果 两者正好是反的 比如斐波拉契数列:0、1、1、2、3、5、8 ... F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*) f(4) = 2 1、递归:从下放上返值 第1层:f(4) = f(3) + f(2) 第2层: f(3) = f(2) + f(1) f(2) = f(1) + f(0) 第3层: f(2) = f(1) + f(0) f(1) = 1 f(1) = 1 f(0) = 0 第4层: f(1) = 1 f(0) = 0 2、递归:返回复杂公式 第1层:f(4) = f(3) + f(2) 第2层:f(4) = (f(2)+f(1)) + (f(1)+f(0)) 第3层:f(4) = ((f(1)+f(0))+f(1)) + (f(1)+f(0)) 3、递推:从头开始,往后推 第1层:f(2) = f(0) + f(1) 第2层:f(3) = f(2) + f(1) 第3层:f(4) = f(3) + f(2) 动态规划,其实就是动态递推 所有的递归,都可以写成递推 ```