汉诺塔递归算法
Posted zkkysqs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汉诺塔递归算法相关的知识,希望对你有一定的参考价值。
# -*- coding:utf-8 -*- # author : Keekuun """ 有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆: 每次只能移动一个圆盘; 大盘不能叠在小盘上面。 """ time = 0 def mov(n, a, b, c): global time # 当只有一个圆盘时 if n == 1: print(a, ‘-->‘, b) time += 1 # 当有n个圆盘时 else: # n = (n-1)+1,先移动n-1个圆盘到B mov(n - 1, a, c, b) # 把最大的圆盘1直接移到C mov(1, a, b, c) # 再把n-1个圆盘从B移到C mov(n - 1, b, a, c) return time print(mov(1, ‘A‘, ‘B‘, ‘C‘)) print(‘*‘*10) print(mov(2, ‘A‘, ‘B‘, ‘C‘)) print(‘*‘*10) print(mov(3, ‘A‘, ‘B‘, ‘C‘)) print(‘*‘*10) print(mov(4, ‘A‘, ‘B‘, ‘C‘))
输出
A --> B
1
**********
A --> C
A --> B
B --> A
4
**********
A --> B
A --> C
C --> A
A --> B
B --> C
B --> A
A --> B
11
**********
A --> C
A --> B
B --> A
A --> C
C --> B
C --> A
A --> C
A --> B
B --> A
B --> C
C --> B
B --> A
A --> C
A --> B
B --> A
26
以上是关于汉诺塔递归算法的主要内容,如果未能解决你的问题,请参考以下文章