根据b站视频整理的
**视频地址:**https://www.bilibili.com/video/BV1S24y1p7iH/?spm_id_from=333.788.videopod.sections&vd_source=6335ddc7b30e1f4510569db5f2506f20
最常见的一个递归例子:
斐波那契数列:1,2,3,5,8,13,21…
#include<iostream>
using namespace std;
int n;
int fibnaci(int x){
if(x==1) return 1;
if(x==2) return 2;
return fibnaci(x-1)+fibnaci(x-2);
}
int main(){
scanf("%d",$n);
int res=fibnaci(n);
printf("%d",res);
return 0;
}
递归实现指数型枚举
思路:
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
const int N=20;
int n;
int st[N]; //记录每个数的状态,0表示没考虑,1表示选,2表示不选
void dfs(int x){
if(x>n){
for(int i=1;i<=n;i++){
if(st[i]==1) {
printf("%d",i);
}
}
printf("\n");
return ;
}
//不选
st[x]=2;
dfs(x+1);
st[x]=0;//恢复现场
//选
st[x]=1;
dfs(x+1);
st[x]=0;
}
int main(){
scanf("%d",&n);
dfs(1);
return 0;
}
后续持续更新…