上课内容
常用头文件
#include<cstdio>//scanf、printf 当数据范围大于十的五次方推荐使用
#include<cstring>//memset
#include<iostream>
任何一个递归都可以变成一个递归搜索树辅助理解
再做递归题时最好以树的方式理解
第一例题
二的二十次方 大概是十的六次方
二的十六次方 65536
二的十五次方 32768
二的六三次方 大概是十的八次方
递归最重要的是顺序问题
第一个递归类型:一步步完成,先完成第一步,再完成第二步,等到最后一步直接输出,每一步都有两个选择
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;
const int N=17;
int n;
int st[N];//状态数组存每一位的状态1:代表放数字2.代表不放 0代表还没选择
void dfs(int u)
{
if(u>n)
{
for(int i=1;i<=n;i++)
{
if(st[i]==1) cout<<i<<' ';
}
puts("");//输出空格
return;
}
st[u]=1;
dfs(u+1);
st[u]=0;//清除状态这里没必要
st[u]=2;
dfs(u+1);
st[u]=0;
}
int main()
{
cin>>n;
dfs(1);
}