我不知道我怎麼會在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