递推其实就是递归的循环形式(非递归形式)
注: 一切线性递归都可以转化为尾递归, 而一切尾递归都可转化为循环迭代(非递归)
线性递归与尾递归的区别
两种算法其实是很类似的(递归(记忆化搜素)是从尾到头再到尾得结果, 递推就是直接从头到尾得结果),
我们都需要重点考虑的都是:
1.f的具体含义
// 对于递推来说就是f数组的含义
f[];
// 对于递归来说就是f函数的意义
f();
2.找到可求解的最小子问题
对于dp循环迭代算法来说, 就是f数组f[0]的初始化
对于dp递归算法(记忆化搜素)来说, 就是递归出口
3.f(1) 与 f(n)之间的关系
对于dp循环迭代算法来说就是状态转移方程(其实就是递推式)
对于dp递归算法(记忆化搜素)就是不同自变量函数之间的关系(其实也是递推式)