汉诺塔

算法分析

1.步骤1:如果是一个盘子,直接将a柱子上的盘子从a移动到c

否则

2.步骤2:先将A柱子上的n-1个盘子借助C移动到B(图1)

已知函数形参为hanoi(n,a,b,c),这里调用函数的时候是A柱子上的n-1个,A借助C移动到B,所以调用函数hanoi(n-1,a,c,b)

3.步骤3:此时移动完如图1,但是还没有移动结束,首先要将A柱子上最后一个盘子直接移动到C(图2),调用函数hanoi(1,a,b,c)

4.步骤4:最后将B柱子上的n-1个盘子借助A移动到C(图3),调用函数hanoi(n-1,b,a,c)

这时递归调用就完成了

代码

def hanoi(n,a,b,c):
if n == 1:
print(a,'-->',c)
else:
hanoi(n-1,a,c,b)
hanoi(1,a,b,c)
hanoi(n-1,b,a,c) # 测试
hanoi(3,a,b,c) # A --> C
# A --> B
# C --> B
# A --> C
# B --> A
# B --> C
# A --> C

最新文章

  1. 前端自学vs跟大神系统学?你看着办
  2. (转载)FT232RL通信中断问题解决办法总结
  3. Scala入门之函数
  4. [转发]dsdt解决睡眠唤醒死机
  5. Win7 DCOM 配置中我的电脑出现红色箭头并且无属性显示的解决方法
  6. URAL 1658. Sum of Digits(DP)
  7. 可以使用mysql自己带的config edit
  8. BZOJ 1051: [HAOI2006]受欢迎的牛 强连通缩点
  9. stm32上的Lava虚拟机开发进度汇报(1)
  10. 1008 Gnome Tetravex
  11. 按自己的想法去理解事件和泛型(C#)
  12. 面向对象的特性-为String类型的变量扩展一个replaceAll()函数
  13. Java命令模式以及来自lambda的优化
  14. UML图学习之三 状态图
  15. string的常见用法
  16. VM虚拟机Linux和主机数据传输
  17. Linux连接redis客户端出现Could not connect to Redis at 127.0.0.1:6379: Connection refused
  18. omnigraffle 的一些总结
  19. HDU 1808 Halloween treats(抽屉原理)
  20. PHP常用算法和数据结构示例

热门文章

  1. jsonp 监控简陋代码
  2. 贪心 Codeforces Round #263 (Div. 2) C. Appleman and Toastman
  3. java大数轻松过
  4. java 选择排序与冒泡排序
  5. LN : leetcode 191 Number of 1 Bits
  6. SQL生僻字模糊查询
  7. CSS 潜藏着的BFC
  8. 我的DBDA类
  9. jsp学习笔记 - 内置对象 pageContext
  10. 观察者模式在Foundation框架通知中的应用