您的位置:首页 > 编程语言 > Python开发

Python入门-15:turtle库:递归函数

2018-12-09 20:43 190 查看

五角星的绘制3.0

案例描述

案例分析

递归函数

自己调用自己

完整程序及结果

"""
作者:张梦
功能:绘制五角星绘制重复不同大小的五角星
版本:3.0
新增功能:使用迭代
日期:2018.12.9
"""

"""引用turtle库"""
import turtle

"""迭代画五角星"""
def draw_recursive_pentagram(size):
count = 1                   # 计数器
while count <= 5:
turtle.forward(size)
turtle.right(144)
# count = count + 1
count += 1              # 还有 -=、*=、/=
size += 10
if size <= 80:
draw_recursive_pentagram(size)

"""主函数"""
def main ():
size = 50
turtle.penup()
turtle.backward(100)
turtle.pendown()
turtle.pensize(2)
turtle.color('red')
draw_recursive_pentagram(size)

turtle.exitonclick()    # 不加这个它画完了就自己关掉图那个窗口了,一闪而过
# 加上这个表示鼠标点击才会关闭窗口

if __name__ =="__main__":
main()

程序问题

问题:
如果把if改为while,就会出现死循环,前面好的,但是最后一直在画最后一个五角星,不停。
单步调试结果:到最后size是80然后加10变成90,然后跳到下面那个while的时候,它会自动改成80,然后就可以一直自己调用自己
解答:
用while虽然能实现if的功能,但是会出现一直调用自己的死循环,不同于if,如果while的条件不符合,会跳到上一个while即size=80时。

"""迭代画五角星"""
def draw_recursive_pentagram(size):
count = 1                   # 计数器
while count <= 5:
turtle.forward(size)
turtle.right(144)
# count = count + 1
count += 1              # 还有 -=、*=、/=
size += 10
while size <= 80:
draw_recursive_pentagram(size)

4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: