栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

2021-10-07

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-07

一周总结【9.27-10.3】
  • 前言
  • 一、什么是汉诺塔问题
  • 二、实现步骤
    • 1.方法
    • 2.代码实现
    • 3.运行结果
  • 总结


前言

本周通过老师课上对汉诺塔问题的介绍,对递归有了基础认识。为了加深对递归问题的理解,运用python实现汉诺塔问题,使用的编译器为pycharm。

一、什么是汉诺塔问题

现有a、b、c三个柱子,a柱上按从大到小的顺序依次放入n个盘子。需将a柱上的盘子全部挪到c柱上,且挪动过程中大盘子不能放于小盘子之上。

二、实现步骤 1.方法

(1)将a柱上的n-1个盘子(n>1)挪到b柱上;
(2)将a柱上剩下的最后一个盘子挪到c柱上;
(3)将b柱上的n-1个盘子挪到c柱上;
(4)当n=1时,直接将盘子从a柱挪到c柱上。

2.代码实现
def mov(n,a,b,c):
	if n == 1:
		print(a,'->',c)#当n=1时,直接将盘子从a柱挪到c柱上
	else:
		mov(n-1,a,c,b) #将a柱上的n-1个盘子(n>1)挪到b柱上
		mov(1,a,b,c)   #将a柱上剩下的最后一个盘子挪到c柱上
		mov(n-1,b,a,c) #将b柱上的n-1个盘子挪到c柱上
num = abs(int(input('a柱上原始有几个盘子:')))
print('n移动步骤为:')
mov(num,'a','b','c')
3.运行结果

当n=3时:

当n=4时:

总结

汉诺塔问题是最典型的递归案例,当n=3时,可以将问题分成先移动两个再移动最后一个,当n=4时则是先移动三个再移动最后一个而移动三个的问题又回到了n=3时。以此不停的递归调用函数直到问题被分解成最小规格即触发递归的结束条件,将问题解决。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/302330.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号