1、递推
找规律
1、初始条件
2、基础规律
1、顺推
由开始,推结束状态,顺推
最常考的就是 斐波那契数列
#include <iostream> using namespace std;
int a[110];
int main() { int n; cin >> n;
a[1] = 1; for (int i = 2; i <= n; i++) { a[i] = a[i - 1] + a[i - 2]; } cout << a[n];
return 0; }
|
2、逆推
由结束,推开始, 逆推
二、递归
递进+回归 合在一起是递归,利用函数实现(自己调用自己, 类似于梦中梦)
1、递进
函数自己调用自己
#include <iostream> using namespace std;
void mf() { cout << "进入下一层" << endl; mf(); }
int main() { mf();
return 0; }
|
占用资源达到一定程度之后,强制结束(while(true) 不会)
2、回归
回归可以(一定范围内)让函数 正常结束
函数调用自己的时候加上限制条件
#include <iostream> using namespace std;
void mf(int x) { cout << x << ":进入下一层" << endl; x++; if (x < 5) { mf(x); } return; }
int main() { mf(0);
return 0; }
|
递进+回归合并在一起为递归
#include <iostream> using namespace std;
void fun(int x) { cout << x << " "; x++; if (x <= 10) { fun(x); } return; }
void fun2(int n) { if (n < 10) { fun2(n + 1); } int a = 11 - n; cout << a << " "; return; }
int main() { fun(1); cout << endl; fun2(1);
return 0; }
|