Python自学-递归函数之汉诺塔问题
2019-01-29 21:50
176 查看
递归函数之汉诺塔问题
- 规则(A B C 三个塔,盘子都在 A,最后盘子都放到 C) 1.每次移动一个盘子
- 2.任何时候大盘子在下面,小盘子在上面
-
1.n = 1:直接把A上的一个盘子移动到C上,A -> C
-
1). 把 A 上的两个盘子,通过 C 移动到 B 上,调用递归实现
-
1). 把 A 上的 n-1 个盘子,通过 C 移动到 B 上,调用递归实现
# 汉诺塔问题实现步骤代码 def hano(n,A,B,C): ''' 汉诺塔的递归实现 n:代表几个盘子 A:代表第一个盘子,开始的盘子 B:代表第二个盘子,过渡的盘子 C:代表第三个盘子,最后的盘子 ''' if n == 1: print(A,"-->>",C) return None # n = 2 这段 if 代码实际可以省去不写 if n == 2: print(A,"-->>",B) print(A,"-->>",C) print(B,"-->>",C) return None # 当 n > 2 时,通过以下三个大步骤实现: # 1)把 n-1 个盘子,从 A 借助于 C 移动到 B,递归调用,注意参数位置变化 hano(n-1,A,C,B) # 2)把 A 剩下的最大盘子移动到 C print(A,"-->>",C) # 3)把 n-1 个盘子,从 B 借助于 A 移动到 C,递归调用,注意参数位置变化 hano(n-1,B,A,C) A = "A" B = "B" C = "C" # 调用 input 函数输入需要移动的盘子数量,并使用 int 转化为整数 n = int(input(">>>请输入汉诺塔初始盘子数量:")) hano(n,A,B,C)
相关文章推荐
- python学习递归函数碰到汉诺塔问题(随笔)
- Python--递归函数解决汉诺塔问题
- python学习---递归函数实现汉诺塔问题
- 汉诺塔问题-python
- Python利用递归函数移动汉诺塔
- 汉诺塔递归问题的python实现
- C++/python解决汉诺塔问题
- Python之汉诺塔移动(递归函数使用)
- 第12周项目3-用递归函数求解--汉诺塔问题
- 【Python】用Python解决汉诺塔问题
- Python递归解决汉诺塔问题
- python实现简单问题(汉诺塔、杨辉三角等)
- 2018/8/23(python学习之关于递归函数的理解于,,输出某个月的日历,,路边停车,,汉诺塔)
- 百练OJ:4147:汉诺塔问题(Hanoi)——python实现汉诺塔
- Python自学笔记之函数3——递归函数
- Python实现递归函数:汉诺塔
- 自学Python的第一个问题和第一篇博客~
- python:递归函数之汉诺塔
- 汉诺塔问题的python实现
- 关于python汉诺塔问题的代码消化理解