我不知道我怎么会在C.你将如何产生Sierpinski三角形的C(递归)
递归产生一定深度的Sierpinski三角形我写了这个功能来生成高度h形成一个三角形*的顶点坐标(x,y)*。
void triangle(char display[100][100],int x, int y, int h) {
for (int row = y; row<=h-1+y; row++) {
for (int column = x; column<=2*(row+1-y)+x-2; column++) {
display[row][column-(row+1-y)+1] = '*';
}
}
for (int i = 0 ; i<100 ; i++) {
for (int j = 0; j<100; j++) {
if (display[i][j]=='\0')
display[i][j]=' ';
}
}
}
使用此代码我可以生成“手动”Sierpinski三角形。但我想递归地做,任何深度和高度(高度可以被2 ^(深度)整除)。
int main()
{
char display[100][100] = { {0} };
triangle(display, 20, 0, 5);
triangle(display, 15, 5, 5);
triangle(display, 25, 5, 5);
triangle(display, 10, 10, 5);
triangle(display, 30, 10, 5);
triangle(display, 5, 15, 5);
triangle(display, 15, 15, 5);
triangle(display, 25, 15, 5);
triangle(display, 35, 15, 5);
for (int i=0 ; i<100; i++) {
printf("\n");
for (int j=0; j<100; j++) {
printf("%c", display[i][j]);
}
}
}
这是我上面的代码输出:
递归意味着函数自己调用。所以,而不是主要三角函数的所有调用,为什么没有三角函数增加它的参数,然后...等待它...调用三角形()! – par
事情是,我不知道如何找到每个三角形的顶点为任何给定的深度 –
你应该说在你的问题。正如所写的那样,“请为我做我的功课。”立即想到的一个想法是为称为“深度”的三角函数添加额外的参数。首先调用三角形()(深度为0),并从三角形内部用'++ depth'作为'depth'参数递归调用它。每当“深度%h”为零时,您就知道您处于三角形的顶部。 – par