目录
1、递推
递推就是说从初值出发后一直运算到所需的结果。
------从已知到未知。(从小到大)
举一个简单的例子:
每天能学习一个小时的编程,那么一个月之后可以学到三十小时的编程知识。
2、递归
递归就是说从所需的结果出发到不断回溯之前,直到回溯运算到初值,再递推回所需要求的结果。
------从未知到已知,再从已知到未知。(从大到小,再从小到大)
举一个更简单的例子:
你想进大厂或者年薪百万,就必须编程牛比得很,就得减少游戏时间,减少美色,减少快餐式的短视频消耗,努力学习。就这样一个大目标被分解为一个接着一个的小目标,通过完成一个接着一个的小目标来完成大目标。
3、结言
- 递归就是指程序调反复用自身的编程思想。
- 迭代就是可以说是用递推的思想,根据递推公式不断演进得到变量新值
结合一个经典的例子:斐波那契数列
递归
java
class Solution {
public int fib(int n) {
if(n == 0)
return 0;
if(n == 1)
return 1;
return fib(n-1) + fib(n-2);
}
}
递推
java
class Solution {
public int fib(int n) {
int[] dp = new int[n+1];
if(n == 0)
dp[0] = 0;
else if(n == 1)
dp[1] = 1;
else{
dp[0] = 0;
dp[1] = 1;
for(int i=2; i<=n; i++){
dp[i] = dp[i-1] + dp[i-2];
}
}
return dp[n];
}
}