|
void MyDraw(DPOINT * p)
{
if (n <= 0) return;
if((p[n].x < p[0].x+1) && (p[n].x > p[0].x-1) && (p[n].y < p[0].y+1) && (p[n].y > p[0].y-1))
{
pDC->SetPixel(p[0].x, p[0].y, RGB(255,0,0));
return;
}
DPOINT *p1;
p1 = new DPOINT[n+1];
int i, j;
p1[0] = p[0];
for(i=1; i<=n; i++)
{
for(j=0; j<=n-i;j++)
{
p[j].x = (p[j].x + p[j+1].x)/2;
p[j].y = (p[j].y + p[j+1].y)/2;
}
p1[i] = p[0];
}
MyDraw(p);
MyDraw(p1);
delete p1;
}
我不知道函数具体是怎么运行的,比如,第二次递归调用该函数的时候,进入下面这个return,会完全跳出函数么?还是再次运行MyDraw(p1);
if((p[n].x < p[0].x+1) && (p[n].x > p[0].x-1) && (p[n].y < p[0].y+1) && (p[n].y > p[0].y-1))
{
pDC->SetPixel(p[0].x, p[0].y, RGB(255,0,0));
return;
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|