c語言的程序設計
10
題目:遞歸法繪制三角形圖案 要求:遞歸法繪制三角形圖案。整個遞歸三角形圖案是有大小不同的許多三角形組成的,除了最大的三角形除外,其余三角形都是聯絡包含其他的三角形的三邊中點構成的。程序運行效果如圖所示 n=2: n=7
最佳回答:
#include <stdio.h>
#include <graphics.h>
typedef struct
{
int x;
int y;
}point;
point mp(point s, point t)
{
point m;
m.x = (s.x + t.x)/2;
m.y = (s.y + t.y)/2;
return m;
}
void myline(point s, point t)
{
line(s.x, s.y, t.x, t.y);
}
void draw(point p1, point p2, point p3, int n)
{
if(n <= 0) return;
myline(p1,p2);
myline(p1,p3);
myline(p2,p3);
draw(p1, mp(p1,p2), mp(p1,p3), n-1);
draw(p2, mp(p1,p2), mp(p2,p3), n-1);
draw(p3, mp(p1,p3), mp(p2,p3), n-1);
draw(mp(p1,p2), mp(p1,p3), mp(p2,p3), n-1);
}
int main( )
{ point p1={300,100},p2={100,400},p3={500,400};
int n;
initgraph(VGA,VGAHI, "");
for(n = 1; n <= 7; n++)
{
draw(p1, p2, p3,n);
getch();
}
getch();
}