汉诺塔递归算法

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

 

































以上是关于汉诺塔递归算法的主要内容,如果未能解决你的问题,请参考以下文章

汉诺塔的递归算法

python每日算法 | 算法的起步与递归算法(汉诺塔问题)

分治算法——汉诺塔问题

递归和迭代算法 [汉诺塔问题]

汉诺塔(Hanoi)图解递归算法

python的递归算法学习:汉诺塔递归算法