Python—斐波那契数列与汉诺塔问题

斐波那契数列

def f(n):
    if n == 1 or n == 2:
        return 1
    else:
        return f(n-1) + f(n-2)

print(f(10))

 汉诺塔问题

# 统计移动步数,打印每一步移动过程
count = 0
def hanoi(n, src, dst, mid):
    global count
    # 基例
    if n == 1:
        print("{}:{}->{}".format(1,src,dst))
        count +=1
    # 链条
    else:
        #1.把n-1个圆盘从源柱子移动到中间的柱子
        hanoi(n-1,src,mid,dst)
        #2.把n号圆盘从源柱子移动到目的柱子
        print("{}:{}->{}".format(n, src, dst))
        count += 1
        # 3.把n-1个圆盘从中间辅助柱子移动到目标柱子
        hanoi(n-1,mid,dst,src)
# n 圆盘数量 src 源柱子 dst 目的柱子 mid 中间辅助柱子

hanoi(3,"A","C","B")
print("经过了{}步的移动".format(count))

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SmoothSailingT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值