五角星的绘制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)