当前位置:   article > 正文

Python中的汉诺塔问题求解和科赫曲线绘制(递归扩展)_汉诺塔绘图python

汉诺塔绘图python

    汉诺塔问题求解,在a杆上自上而下、由大到小顺序地串有64个盘子,要求把a杆上的盘子借助c杆全部移动到b杆上。

  1. def hanoi(n,a,b,c):
  2.     if(n>0):
  3.         hanoi(n-1,a,c,b)  #n-1个盘子,借助b杆放在c杆上
  4.         print(“move disc no:{} from pile {} to {}”.format(n,a,b))#第n个盘子从a杆移动到b杆
  5.         hanoi(n-1,c,b,a)  #把c杆上的n-1个盘子借助a杆移动到b杆
  6. hanoi(64,’a’,’b’,’c’)

科赫曲线的基本概念和绘制方法如下:

正整数n代表科赫曲线的阶数,表示生成科赫曲线过程的操作次数。科赫曲线初始化阶数为0,表示一个长度为L的直线。对于直线L,将其等分为三段,中间一段用边长为L/3的等边三角形的两个边替代,得到1阶科赫曲线,它包含四条线段。进一步对每条线段重复同样的操作后得到2阶科赫曲线。继续重复同样的操作n次可以得到n阶科赫曲线。

  1. import turtle
  2. def koch(size, n):
  3. if n == 0:
  4. turtle.fd(size)
  5. else:
  6. for angle in [0, 60, -120, 60]:
  7. turtle.left(angle)
  8. koch(size/3, n-1)
  9. def main(n):
  10. turtle.setup(800,400) #启动图形窗口 800*400
  11. turtle.speed(0) #控制绘制速度
  12. turtle.penup() #让画笔抬起来,即不再在画布上留下轨迹,只是移动而已
  13. turtle.goto(-300, -50) ##将笔移动到-300,-50位置
  14. turtle.pendown() #放下笔
  15. turtle.pensize(2) #笔的粗度是2
  16. koch(600,n) #0阶科赫曲线长度,阶数 ,绘制长度为600,阶为n的雪花曲线
  17. turtle.hideturtle() #隐藏画笔的形状
  18. main(3)#输入你想绘制的几阶科赫曲线

        科赫曲线的雪花效果:

  1. import turtle
  2. def koch(size, n):
  3. if n == 0:
  4. turtle.fd(size)
  5. else:
  6. for angle in [0, 60, -120, 60]:
  7. turtle.left(angle)
  8. koch(size/3, n-1)
  9. def main():
  10. turtle.setup(600,600)
  11. turtle.speed(0)
  12. turtle.penup()
  13. turtle.goto(-200, 100)
  14. turtle.pendown()
  15. turtle.pensize(2)
  16. level = 5
  17. koch(400,level)
  18. turtle.right(120)
  19. koch(400,level)
  20. turtle.right(120)
  21. koch(400,level)
  22. turtle.hideturtle()
  23. main()

此节只为扩展,不做详解!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/386177
推荐阅读
相关标签
  

闽ICP备14008679号