十界蓝桥杯青少年Python中/高级组省赛试题详解——编程题:树形绘制

梁老师
梁老师 北京小升初老师~

0 人点赞了该文章 · 63 浏览




图片

图片

  海龟裂变法:把海龟朝上,克隆一变二,分别左右30°,前进60;同样裂变4次,逐层减6绘制。

  程序代码:

图片

图片

  单海龟回退法:递归先绘制左子树,回退,然后绘制右子树,回退复位。为了理解回退法,先写一段画一个二叉的程序:

图片

图片

  运行结果:

图片

  现在复制drawCross函数,函数体内代码不改,只改变名称为drawCross2,然后加到drawCross的“#”处,代码如下:

图片

图片

  运行结果:

图片

  可见,一个递归画图函数,删除递归调用行后,海龟在函数运行结束后完全复位。本题的回退法递归代码就可以得到了。

  程序代码:

图片

图片

回退法由于海龟回退需要时间,所以绘制速度比裂变法慢。回退法逻辑上比裂变法稍微复杂些。

图片

图片


图片

  由于层数改为随机数,因此采用倒序计数法,当层数计数为0是结束递归;开始长度也改为随机数,所以递归函数要增加一个长度输入参数length;要倾斜,则左右子树的偏角在同一侧,定为偏向方20°,偏离方10°。

  回退法代码:

图片

图片

图片4  裂变法代码:

图片

图片

  思考:如果不小心把回退法的代码搞成下面的样子,请问还能绘制出树丛来吗?如果能,那左边和右边的树丛还有区别吗?

图片

图片

图片

图片


添加 家长论坛微信 



发布于 2024-04-25 09:05

免责声明:

本文由 梁老师 原创发布于 家长帮 ,著作权归作者所有。

登录一下,更多精彩内容等你发现,贡献精彩回答,参与评论互动

登录! 还没有账号?去注册

暂无评论

All Rights Reserved Powered BY WeCenter V4.1.0 © 2026 京ICP备20005761号-2