7-4 分形的递归输出 (20分)
#include <stdio.h>
#include<math.h>
int t(int i,int j,int n);
void ma(int m);
int main()
{
int x,m;
scanf("%d",&x);
while(x!=-1)
{
if(x==1)printf("X\n");
else ma(x);
printf("-\n");
scanf("%d",&x);
}
return 0;
}
void ma(int m)
{
int n=pow(3,m-1),i,j,a[300][300]={0};
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)a[i][j]=t(i,j,n);
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(a[i][j]==1)printf("X");
else printf(" ");
}
printf("\n");
}
}
int t(int i,int j,int n)
{
int a=pow(3,n-2);
if(n==2)
{
if((i+j)%2==0) return 1;
else return 0;
}
else
{
if((i/a+j/a)%2==0)return t(i,j,n-1);
else return 0;
}
}