VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - QB运用递归法一例
发表评论(0)作者:苗辉, 平台:VB6.0+Win98, 阅读:12575, 日期:2001-01-17
QB运用递归法一例
苗辉
  

递归法是程序设计中的一个难点,对BASIC语言来讲更是如此。实际上QuickBASIC和VB都已经支持了程序的递归调用,编写递归程序也方便多了。
    下面就举一个画树的例子,编程的目的是用递归法画一棵三叉树,树枝、树叶采用不同颜色,以下QBASIC程序直接执行即可动态地画出一棵很真实的树。
源程序如下:
DECLARE SUB JIAO (JAO!):DECLARE SUB tree(C!)
SCREEN 12
DIM SHARED J
DRAW “BM320,460”:CALL tree(440)
PLAY “T255L 16Xcdefgab”
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