递归函数:实现汉诺塔&绘制科赫雪花&科赫四方形

今天学习递归,对我来讲还有点小难度,特别是汉诺塔那一块,思考了好久才把自己绕出来。很开心呀~新学习python的小伙伴们对递归有什么不太理解的地方欢迎来探讨0

汉诺塔

count=0
def hanoi(n,src,dst,mid):
    global count
    if n==1:
        print("{}:{}->{}".format(1,src,dst))
        count+=1
    else:
        hanoi(n-1,src,mid,dst)
        print("{}:{}->{}".format(n,src,dst))
        count+=1
        hanoi(n-1,mid,dst,src)
hanoi(10,"A","C","B")
print(count)

绘制科赫雪花

送你一片大雪花~

import turtle
turtle.speed(20)#❄画得有点慢,加快速度!
def koch(size,n):#科赫曲线
    if n==0:
        turtle.fd(size)
    else:
        for angle in [0,60,-120,60]:
            turtle.left(angle)
            koch(size/3,n-1)
def main():
    turtle.setup(600,600)
    turtle.penup()
    turtle.goto(-200,100)
    turtle.pendown()
    turtle.pensize(2)
    turtle.pencolor("purple")
    level=3
    koch(400,level)
    turtle.right(120)
    koch(400,level)
    turtle.right(120)
    koch(400,level)
    turtle.hideturtle()#隐藏绘图结束后的海龟
main()

科赫正方形

老师布置的举一反三作业,我把凸起的三角形变成正方形,感觉有点福字外框的喜庆感觉哈哈哈~

import turtle
turtle.speed(20)
def koch(size,n):#科赫曲线
    if n==0:
        turtle.fd(size)
    else:
        for angle in [0,90,-90,-90,90]:
            turtle.left(angle)
            koch(size/3,n-1)
def main():
    turtle.setup(600,600)
    turtle.penup()
    turtle.goto(-200,100)
    turtle.pendown()
    turtle.pensize(2)
    turtle.pencolor("red")
    level=2
    koch(100,level)
    turtle.right(90)
    koch(100,level)
    turtle.right(90)
    koch(100,level)
    turtle.right(90)
    koch(100,level)
    turtle.hideturtle()#隐藏绘图结束后的海龟
main()

你可能感兴趣的:(Python基础)