我:
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int n,a[1025][1025];
void shemian(int a,int r,int s)
{
if (a == 2)
{
a[r][s] = 0;//第一个报错点
return;
}
for (int i = r; i <= r + a; i++)
{
for (int j = s; j <= s + a; j++)
{
a[i][j]=0;//第二个报错点
}
}
shemian(a / 2, r + a, s);
shemian(a / 2, r, s + a);
shemian(a / 2, r + a, s + a);
}
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
a[i][j] = 1;
}
}
shemian(pow(2,n),1,1);
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
cout << a[i][j] << ' ';
}
cout << endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int n,p=1,a[1050][1050];
void di(int x,int l,int q)
{
if(x==2)
{
a[l][q]=0;
return;
}
for(int i=l; i<=l+x/2-1; i++)
for(int j=q; j<=q+x/2-1; j++)
a[i][j]=0;
di(x/2,l+x/2,q);
di(x/2,l+x/2,q+x/2);
di(x/2,l,q+x/2);
}
int main()
{
cin>>n;
for(int i=1; i<=n; i++)
p*=2;
for(int i=1; i<=p; i++)
for(int j=1; j<=p; j++)
a[i][j]=1;
di(p,1,1);
for(int i=1; i<=p; i++)
{
for(int j=1; j<=p-1; j++)
cout<<a[i][j]<<" ";
cout<<a[i][p]<<endl;
}
return 0;
}
于是乎大佬能告诉我写递归中的if部分那个地方有什么问题,怎么改吗?感激不尽!