算法·递归
引言:
递归在C++中是重要的地基,dfs、bfs、记忆化搜索等都是在递归之上建立的。
特点:
递归这一类问题的结构大多一样,改动不会太大
例题:
集合求和、小鱼的数字游戏、蜜蜂路线等
适用情景/题目:有规律性的题目
正文:
递归的结构分为四个部分:1.类型 2.参数 3.边界 4.内容
1.类型:
有:void,int,bool等类型
2.参数:
有:int,double,char等类型
3.边界:
在if判断语句中添否定条件
4.内容:
即非否定条件下要做的操作,其中要有函数的自调用。
例:
#include<bits/stdc++.h>
using namespace std;
int r[25]={0, 1,1};
int find(int x)
{
if(r[x]!=0) return r[x];
return r[x]=find(x-1)+find(x-2);
}
int main()
{
int n,a;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a;
cout<<find(a)<<endl;
}
return 0;
}
