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

五角星的绘制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)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值