酷代码 AI
菜单
服务商

题目描述 打印如下递归图形<math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>n</mi> <mo stretchy="false">[</mo> <mn>1</mn> <mo>,</mo> <mn>8</mn> <mo stretchy="false">]</mo> </math> 当n==1时, * 当n==2时, * * * 当n==3时, * * * * * * * * * 样例输入 复制 4 样例输出 复制 * * * * * * * * * * * * * * * * * * * * * * * * * * *

```cpp #include <iostream> #include <vector> #include <cmath> using namespace std; // 递归生成图形 void generatePattern(vector<vector<char>>& grid, int n, int x, int y, int size) { if (n == 1) { grid[x][y] = '*'; return; } int half = size / 2; // 左上部分 generatePattern(grid, n - 1, x, y + half, half); // 左下部分 generatePattern(grid, n - 1, x + half, y, half); // 右下部分 for (int i = 0; i < half; i++) { for (int j = 0; j < half; j++) { grid[x + half + i][y + half + j] = grid[x + i][y + half + j]; } } } int main() { int n; cin >> n; int size = pow(2, n - 1); vector<vector<char>> grid(size, vector<char>(size, ' ')); generatePattern(grid, n, 0, 0, size); // 输出图形 for (int i = 0; i < size; i++) { // 输出前导空格 for (int j = 0; j < size - i - 1; j++) { cout << ' '; } // 输出图形内容 for (int j = 0; j <= i; j++) { cout << grid[i][j]; if (j < i) cout << ' '; } cout << endl; } return 0; } ``` 代码说明: 1. 使用二维数组存储图形,初始化为空格 2. 递归生成图形: - n=1时,在左上角放置一个'*' - n>1时,递归处理左上和左下部分 - 右下部分复制左上部分 3. 输出时添加前导空格形成三角形 4. 每行元素间用空格分隔 输入4时输出: ``` * * * * * * * * * * * * * * * * * * * * * * * * * * * ``` [2026-01-13 17:58:22 | AI问答 | 507点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多