作者共發了12篇帖子。 內容轉換:不轉換▼
 
點擊 回復
496 11
2014-第五题 打印图形 递归调用情况
一派護法 十九級
1樓 發表于:2016-3-18 09:57
f(a, 5, 0, 16);
    f(a, 4, 0, 24);
        f(a, 3, 0, 28);
            f(a, 2, 0, 30);
                draw(0, 31);
                draw(1, 30);
                draw(1, 32);
            f(a, 2, 2, 28);
                draw(2, 29);
                draw(3, 28);
                draw(3, 30);
            f(a, 2, 2, 32);
                draw(2, 33);
                draw(3, 32);
                draw(3, 34);
        f(a, 3, 4, 24);
            f(a, 2, 4, 26);
                draw(4, 27);
                draw(5, 26);
                draw(5, 28);
            f(a, 2, 6, 24);
                draw(6, 25);
                draw(7, 24);
                draw(7, 26);
            f(a, 2, 6, 28);
                draw(6, 29);
                draw(7, 28);
                draw(7, 30);
        f(a, 3, 4, 32);
            f(a, 2, 4, 34);
                draw(4, 35);
                draw(5, 34);
                draw(5, 36);
            f(a, 2, 6, 32);
                draw(6, 33);
                draw(7, 32);
                draw(7, 34);
            f(a, 2, 6, 36);
                draw(6, 37);
                draw(7, 36);
                draw(7, 38);
    f(a, 4, 8, 16);
        f(a, 3, 8, 20);
            f(a, 2, 8, 22);
                draw(8, 23);
                draw(9, 22);
                draw(9, 24);
            f(a, 2, 10, 20);
                draw(10, 21);
                draw(11, 20);
                draw(11, 22);
            f(a, 2, 10, 24);
                draw(10, 25);
                draw(11, 24);
                draw(11, 26);
        f(a, 3, 12, 16);
            f(a, 2, 12, 18);
                draw(12, 19);
                draw(13, 18);
                draw(13, 20);
            f(a, 2, 14, 16);
                draw(14, 17);
                draw(15, 16);
                draw(15, 18);
            f(a, 2, 14, 20);
                draw(14, 21);
                draw(15, 20);
                draw(15, 22);
        f(a, 3, 12, 24);
            f(a, 2, 12, 26);
                draw(12, 27);
                draw(13, 26);
                draw(13, 28);
            f(a, 2, 14, 24);
                draw(14, 25);
                draw(15, 24);
                draw(15, 26);
            f(a, 2, 14, 28);
                draw(14, 29);
                draw(15, 28);
                draw(15, 30);
    f(a, 4, 8, 32);
        f(a, 3, 8, 36);
            f(a, 2, 8, 38);
                draw(8, 39);
                draw(9, 38);
                draw(9, 40);
            f(a, 2, 10, 36);
                draw(10, 37);
                draw(11, 36);
                draw(11, 38);
            f(a, 2, 10, 40);
                draw(10, 41);
                draw(11, 40);
                draw(11, 42);
        f(a, 3, 12, 32);
            f(a, 2, 12, 34);
                draw(12, 35);
                draw(13, 34);
                draw(13, 36);
            f(a, 2, 14, 32);
                draw(14, 33);
                draw(15, 32);
                draw(15, 34);
            f(a, 2, 14, 36);
                draw(14, 37);
                draw(15, 36);
                draw(15, 38);
        f(a, 3, 12, 40);
            f(a, 2, 12, 42);
                draw(12, 43);
                draw(13, 42);
                draw(13, 44);
            f(a, 2, 14, 40);
                draw(14, 41);
                draw(15, 40);
                draw(15, 42);
            f(a, 2, 14, 44);
                draw(14, 45);
                draw(15, 44);
                draw(15, 46);
f(a, 5, 16, 0);
    f(a, 4, 16, 8);
        f(a, 3, 16, 12);
            f(a, 2, 16, 14);
                draw(16, 15);
                draw(17, 14);
                draw(17, 16);
            f(a, 2, 18, 12);
                draw(18, 13);
                draw(19, 12);
                draw(19, 14);
            f(a, 2, 18, 16);
                draw(18, 17);
                draw(19, 16);
                draw(19, 18);
        f(a, 3, 20, 8);
            f(a, 2, 20, 10);
                draw(20, 11);
                draw(21, 10);
                draw(21, 12);
            f(a, 2, 22, 8);
                draw(22, 9);
                draw(23, 8);
                draw(23, 10);
            f(a, 2, 22, 12);
                draw(22, 13);
                draw(23, 12);
                draw(23, 14);
        f(a, 3, 20, 16);
            f(a, 2, 20, 18);
                draw(20, 19);
                draw(21, 18);
                draw(21, 20);
            f(a, 2, 22, 16);
                draw(22, 17);
                draw(23, 16);
                draw(23, 18);
            f(a, 2, 22, 20);
                draw(22, 21);
                draw(23, 20);
                draw(23, 22);
    f(a, 4, 24, 0);
        f(a, 3, 24, 4);
            f(a, 2, 24, 6);
                draw(24, 7);
                draw(25, 6);
                draw(25, 8);
            f(a, 2, 26, 4);
                draw(26, 5);
                draw(27, 4);
                draw(27, 6);
            f(a, 2, 26, 8);
                draw(26, 9);
                draw(27, 8);
                draw(27, 10);
        f(a, 3, 28, 0);
            f(a, 2, 28, 2);
                draw(28, 3);
                draw(29, 2);
                draw(29, 4);
            f(a, 2, 30, 0);
                draw(30, 1);
                draw(31, 0);
                draw(31, 2);
            f(a, 2, 30, 4);
                draw(30, 5);
                draw(31, 4);
                draw(31, 6);
        f(a, 3, 28, 8);
            f(a, 2, 28, 10);
                draw(28, 11);
                draw(29, 10);
                draw(29, 12);
            f(a, 2, 30, 8);
                draw(30, 9);
                draw(31, 8);
                draw(31, 10);
            f(a, 2, 30, 12);
                draw(30, 13);
                draw(31, 12);
                draw(31, 14);
    f(a, 4, 24, 16);
        f(a, 3, 24, 20);
            f(a, 2, 24, 22);
                draw(24, 23);
                draw(25, 22);
                draw(25, 24);
            f(a, 2, 26, 20);
                draw(26, 21);
                draw(27, 20);
                draw(27, 22);
            f(a, 2, 26, 24);
                draw(26, 25);
                draw(27, 24);
                draw(27, 26);
        f(a, 3, 28, 16);
            f(a, 2, 28, 18);
                draw(28, 19);
                draw(29, 18);
                draw(29, 20);
            f(a, 2, 30, 16);
                draw(30, 17);
                draw(31, 16);
                draw(31, 18);
            f(a, 2, 30, 20);
                draw(30, 21);
                draw(31, 20);
                draw(31, 22);
        f(a, 3, 28, 24);
            f(a, 2, 28, 26);
                draw(28, 27);
                draw(29, 26);
                draw(29, 28);
            f(a, 2, 30, 24);
                draw(30, 25);
                draw(31, 24);
                draw(31, 26);
            f(a, 2, 30, 28);
                draw(30, 29);
                draw(31, 28);
                draw(31, 30);
f(a, 5, 16, 32);
    f(a, 4, 16, 40);
        f(a, 3, 16, 44);
            f(a, 2, 16, 46);
                draw(16, 47);
                draw(17, 46);
                draw(17, 48);
            f(a, 2, 18, 44);
                draw(18, 45);
                draw(19, 44);
                draw(19, 46);
            f(a, 2, 18, 48);
                draw(18, 49);
                draw(19, 48);
                draw(19, 50);
        f(a, 3, 20, 40);
            f(a, 2, 20, 42);
                draw(20, 43);
                draw(21, 42);
                draw(21, 44);
            f(a, 2, 22, 40);
                draw(22, 41);
                draw(23, 40);
                draw(23, 42);
            f(a, 2, 22, 44);
                draw(22, 45);
                draw(23, 44);
                draw(23, 46);
        f(a, 3, 20, 48);
            f(a, 2, 20, 50);
                draw(20, 51);
                draw(21, 50);
                draw(21, 52);
            f(a, 2, 22, 48);
                draw(22, 49);
                draw(23, 48);
                draw(23, 50);
            f(a, 2, 22, 52);
                draw(22, 53);
                draw(23, 52);
                draw(23, 54);
    f(a, 4, 24, 32);
        f(a, 3, 24, 36);
            f(a, 2, 24, 38);
                draw(24, 39);
                draw(25, 38);
                draw(25, 40);
            f(a, 2, 26, 36);
                draw(26, 37);
                draw(27, 36);
                draw(27, 38);
            f(a, 2, 26, 40);
                draw(26, 41);
                draw(27, 40);
                draw(27, 42);
        f(a, 3, 28, 32);
            f(a, 2, 28, 34);
                draw(28, 35);
                draw(29, 34);
                draw(29, 36);
            f(a, 2, 30, 32);
                draw(30, 33);
                draw(31, 32);
                draw(31, 34);
            f(a, 2, 30, 36);
                draw(30, 37);
                draw(31, 36);
                draw(31, 38);
        f(a, 3, 28, 40);
            f(a, 2, 28, 42);
                draw(28, 43);
                draw(29, 42);
                draw(29, 44);
            f(a, 2, 30, 40);
                draw(30, 41);
                draw(31, 40);
                draw(31, 42);
            f(a, 2, 30, 44);
                draw(30, 45);
                draw(31, 44);
                draw(31, 46);
    f(a, 4, 24, 48);
        f(a, 3, 24, 52);
            f(a, 2, 24, 54);
                draw(24, 55);
                draw(25, 54);
                draw(25, 56);
            f(a, 2, 26, 52);
                draw(26, 53);
                draw(27, 52);
                draw(27, 54);
            f(a, 2, 26, 56);
                draw(26, 57);
                draw(27, 56);
                draw(27, 58);
        f(a, 3, 28, 48);
            f(a, 2, 28, 50);
                draw(28, 51);
                draw(29, 50);
                draw(29, 52);
            f(a, 2, 30, 48);
                draw(30, 49);
                draw(31, 48);
                draw(31, 50);
            f(a, 2, 30, 52);
                draw(30, 53);
                draw(31, 52);
                draw(31, 54);
        f(a, 3, 28, 56);
            f(a, 2, 28, 58);
                draw(28, 59);
                draw(29, 58);
                draw(29, 60);
            f(a, 2, 30, 56);
                draw(30, 57);
                draw(31, 56);
                draw(31, 58);
            f(a, 2, 30, 60);
                draw(30, 61);
                draw(31, 60);
                draw(31, 62);
一派護法 十九級
2樓 發表于:2016-3-18 09:58
其中#define draw(x, y) f(a, 1, (x), (y))
一派護法 十九級
3樓 發表于:2016-3-18 10:02
一派護法 十九級
4樓 發表于:2016-3-18 17:07
一派護法 十九級
5樓 發表于:2016-3-18 17:22
当rank=1时,程序只绘制一个点:

一派護法 十九級
6樓 發表于:2016-3-18 17:26

当rank=2时,程序绘制一个3x2的小三角形。
其中顶点三角形左上角(空白像素)的坐标。
例如执行:f(a, 2, 0, 30);
意思是以(30, 0)为左上角(下图中的红点),绘制一个3x2的三角形。
因此:

图中的红点坐标为(30, 0),其余的黑点坐标依次为:
上(31, 0), 左(30, 1), 右(32, 1)
一派護法 十九級
7樓 發表于:2016-3-18 17:28
当rank=2执行了三次后,也就是画了三个小三角形后,就形成了下面的图像:

这就是rank=3所执行的:递归调用三次rank=2,其中每个rank=2又递归调用三次rank=1
f(a, 3, 0, 28);
意思是说左上角的坐标为(28, 0)
一派護法 十九級
8樓 發表于:2016-3-18 17:30
rank=4的图像:

递归调用三次rank=3,蓝点为左上角坐标。
f(a, 4, 0, 24);
也就是说蓝点的坐标=(24, 0)
一派護法 十九級
9樓 發表于:2016-3-18 17:31
回復5樓 @巨大八爪鱼 的內容:
当rank=1时,程序只绘制一个点:
f(a, 1, y, x)就是在(x, y)处绘制一个点。
一派護法 十九級
10樓 發表于:2016-3-18 17:32
rank=5:

调用三次rank=4
一派護法 十九級
11樓 發表于:2016-3-18 17:34
rank=6:

调用三次rank=5
其左上角的坐标就是最初的(0, 0)咯
一派護法 十九級
12樓 發表于:2016-3-18 17:35
因此,f函数的第三、四个参数就是所画图形左上角的y坐标和x坐标

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:496 回複數:11
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2016-3-18 17:35
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。