主题:运用递归法一例源程序(转贴)
'未标明(转贴)的均是我原创
'源程序如下所示:
SCREEN 12
DIM SHARED J
DRAW "BM320,460": CALL tree(440)
END
SUB JIAO (JAO) '此程序用来将画笔转一定角度。
J = J + JAO
IF J > 360 THEN J = J - 360
IF J < -360 THEN J = J + 360
DRAW "TA=" + VARPTR$(J)
PLAY "T255P64" '此句仅为放慢速度。
END SUB
SUB tree (C) '画树子程序。
IF C < 18 THEN DRAW "C2NU=" + VARPTR$(C): EXIT SUB'画完树叶后返回。
C3 = C / 3
DRAW "C4U=" + VARPTR$(C3)
CALL JIAO(45): CALL tree(C / 2)'逆时针转45度后画左子树。
CALL JIAO(-45): CALL tree(2 * C / 3)'顺时针转45度后画中子树。
CALL JIAO(-45): CALL tree(C / 2)'顺时针转45度后画右子树。
CALL JIAO(45) '逆时针转45度后回到原方向。
DRAW "C7D=" + VARPTR$(C3)
END SUB
'源程序如下所示:
SCREEN 12
DIM SHARED J
DRAW "BM320,460": CALL tree(440)
END
SUB JIAO (JAO) '此程序用来将画笔转一定角度。
J = J + JAO
IF J > 360 THEN J = J - 360
IF J < -360 THEN J = J + 360
DRAW "TA=" + VARPTR$(J)
PLAY "T255P64" '此句仅为放慢速度。
END SUB
SUB tree (C) '画树子程序。
IF C < 18 THEN DRAW "C2NU=" + VARPTR$(C): EXIT SUB'画完树叶后返回。
C3 = C / 3
DRAW "C4U=" + VARPTR$(C3)
CALL JIAO(45): CALL tree(C / 2)'逆时针转45度后画左子树。
CALL JIAO(-45): CALL tree(2 * C / 3)'顺时针转45度后画中子树。
CALL JIAO(-45): CALL tree(C / 2)'顺时针转45度后画右子树。
CALL JIAO(45) '逆时针转45度后回到原方向。
DRAW "C7D=" + VARPTR$(C3)
END SUB