graycker 发表于 2012-8-29 15:05:26

问个函数重复递归调用的问题

void MyDraw(DPOINT * p)
{
        if (n <= 0) return;
        if((p.x < p.x+1) && (p.x > p.x-1) && (p.y < p.y+1) && (p.y > p.y-1))
        {
                pDC->SetPixel(p.x, p.y, RGB(255,0,0));
                return;
        }
        DPOINT *p1;
        p1 = new DPOINT;
        int i, j;
        p1 = p;
        for(i=1; i<=n; i++)
        {
                for(j=0; j<=n-i;j++)
                {
                        p.x = (p.x + p.x)/2;
                        p.y = (p.y + p.y)/2;
                }
                p1 = p;
        }
        MyDraw(p);
        MyDraw(p1);
        delete p1;
}

我不知道函数具体是怎么运行的,比如,第二次递归调用该函数的时候,进入下面这个return,会完全跳出函数么?还是再次运行MyDraw(p1);
if((p.x < p.x+1) && (p.x > p.x-1) && (p.y < p.y+1) && (p.y > p.y-1))
        {
                pDC->SetPixel(p.x, p.y, RGB(255,0,0));
                return;
        }

graycker 发表于 2012-8-29 15:22:43

来个大神教我下吧

graycker 发表于 2012-8-29 15:42:01

多顶顶,总会有高人看见的

dzmcs 发表于 2012-8-29 15:50:50

你的后半句对

graycker 发表于 2012-8-29 15:57:23

dzmcs 发表于 2012-8-29 15:50 static/image/common/back.gif
你的后半句对

哦,谢谢,我猜也是,后来调试的时候发现可以边调试边改代码,然后就发现这个结论了,这样就更复杂了看不懂了
页: [1]
查看完整版本: 问个函数重复递归调用的问题