C++ 代码
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const int N = 1000;
char g[N][N];
int n;
void tuxing(int n, int x, int y) // n是等级 x和y是起点
{
if (n == 1)
{
g[x][y] = 'X';
return;
}
int len = pow(3, n - 2); // 一个X形状的长和宽
tuxing(n - 1, x, y);
tuxing(n - 1, x, y + 2 * len);
tuxing(n - 1, x + len, y + len);
tuxing(n - 1, x + 2 * len, y);
tuxing(n - 1, x + 2 * len, y + 2 * len);
}
int main()
{
while (cin >> n && n != -1)
{
memset(g, ' ', sizeof g);
tuxing(n, 0, 0);
for (int i = 0; i < pow(3, n - 1); i ++)
{
for (int j = 0; j < pow(3, n - 1); j ++)
{
cout << g[i][j];
}
cout << endl;
}
cout << '-' << endl;
}
return 0;
}