用C语言打印类似谢宾斯基三角形的三角形,使此三角形与谢宾斯基三角形的唯一区别为此三角形的空隙为大小相等的边长为三的等边三角形。(使用交替排列的方法)
时间: 2024-09-30 20:09:16 浏览: 28
在C语言中,要打印类似谢宾斯基三角形(Sierpinski Triangle),但其空隙是等边三角形,你可以参考以下递归算法。这个算法会交替放置实心点(通常用星号*表示)和空隙(用三个空格***表示)。假设空隙的边长为3,我们可以这样编写:
```c
#include <stdio.h>
#define SIZE 10 // 设置三角形的最大尺寸
void print_triangle(int row, char pattern, int gap) {
if (row == 0)
return;
// 打印当前行
for (int i = 0; i < row; i++) {
for (int j = 0; j < row - i; j++) {
// 根据模式打印星号或空隙
if (pattern == '1') {
printf("*");
} else if (pattern == '2') {
printf(" ** ");
}
}
// 在行结束处换行
printf("\n");
}
// 递归打印下一行,切换图案
print_triangle(row - 1, pattern ^ 1, gap); // XOR操作切换图案
}
int main() {
int rows = SIZE / 2; // 谢宾斯基三角形每层有3^n个单元格
print_triangle(rows, '1', rows);
return 0;
}
```
在这个例子中,`print_triangle`函数接收行数、当前图案('1'代表星号,'2'代表空隙)和空隙宽度。每次递归调用时,它都会将图案切换一次(通过XOR运算),同时保持空隙的宽度不变。
阅读全文