经管之家App
让优质教育人人可得
立即打开
全部版块
我的主页
›
论坛
›
数据科学与人工智能
›
数据分析与数据科学
›
python论坛
汉诺塔递归的函数的参数传递是怎么理解的
楼主
香蕉菠萝大鸭梨
1950
1
收藏
2017-09-03
def
move(n,a,b,c):
if
n==
1
:
print
(a,
'-->'
,c)
#如果只有一个,可以直接移动了
else
:
move(n-
1
,a,c,b)
#先想方设法把最上面的n-1个盘子从a移动到b上 a='a',c='b',b='c'
move(
1
,a,b,c)
#可以移动最底下的盘子了
move(n-
1
,b,a,c)
#再想方设法把B上的盘子移到C上
move(
3
,
'a'
,
'b'
,
'c'
)
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
全部回复
沙发
徐博
2017-9-3 21:03:49
最好是自己玩一次汉诺塔会比较有体验 或者画个草图,你可以先梳理一遍逻辑然后按照逻辑 写程序。主要是递归的思想,第一步先判断是否只有一个盘子,如果是,就直接输出移动路径,如果不是就进入到else里,这里分三步:1.你要想把最后一个盘子从a--->c,就得借助b,什么情况下能直接把最后一个盘子从a-->c,那就是只有一个盘子的时候,所以上面n-1个盘子都得移动到b上面去,根据汉诺塔的规则,大盘不能在小盘上,所以就得借助c盘,就是 move(n-1,a,c,b) 。2.第二步就简单了,把最后一个盘子从a-->c,你可以直接print(a,'--->'c),也可以用递归,move(1,a,b,c) 。3.第三步,把b上面的n-1个盘子,借助a移动到c上,和第一步差不多递归调用move(n-1,b,a,c)。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
栏目导航
python论坛
房地产专版
经管文库(原现金交易版)
休闲灌水
金融学(理论版)
微观经济学
热门文章
告别熬夜头秃!3天论文特训,实现从“无从下 ...
一点写代码的心得:“你可别再重构了!”
助力高阶认证备考!CDA 三级新上线第一套官 ...
CDA数据分析脱产就业班于2025年12月08日开班 ...
2026价值投资者白皮书
《财经论丛》投稿与录用过程
英伟达CES+2026PPT:计算的炼金术PART1:物 ...
贾俊平《统计学》考点精讲+讲义
人工智能—历史、现状和未来
2026年世界经济形势与展望(英)
推荐文章
26年寒假天津站|Gemini论文写作&数据分析 ...
2026JG学术冬训营:从Stata初高到Python机器 ...
关于如何利用文献的若干建议
关于学术研究和论文发表的一些建议
关于科研中如何学习基础知识的一些建议 (一 ...
一个自编的经济学建模小案例 --写给授课本科 ...
AI智能体赋能教学改革: 全国AI教育教学应用 ...
2025中国AIoT产业全景图谱报告-406页
关于文献求助的一些建议
几种免费下载文献的方法----我的文献应助经
说点什么
分享
微信
QQ空间
QQ
微博
扫码加好友,拉您进群
各岗位、行业、专业交流群