python实现汉诺塔问题

本文介绍了一个古老的印度传说——汉诺塔问题,并提供了一段使用Python语言实现该问题的代码示例。通过递归算法,实现了金片的正确移动过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python实现汉诺塔问题

汉诺塔(又称河内塔)问题是印度的一个古老的传说.传说中,开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆形的金片,最大的 一个在底下,其余一个比一个小,依次叠上去,寺院的僧侣依照一个古老的预言,不知疲倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作 为帮助,但每次只能搬一个,而且大的不能放在小的上面,预言说,当这些金片移动完毕后,世界就会灭亡。

代码块

#!/usr/bin/env python
n = int(input('please input a number:'))
count=1
def f(n, a, b, c):
    global count
    if n == 1:
        print('%d:\t%s --> %s' % (count,a,c))
        count += 1
    else:
        f(n-1, a, c, b)
        f(1, a, b, c)
        f(n-1, b, a, c)

f(n, 'A', 'B', 'C')

运行结果:
[root@yuan python]# ./hannuota.py
please input a number:3
1: A –> C
2: A –> B
3: C –> B
4: A –> C
5: B –> A
6: B –> C
7: A –> C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值