为了账号安全,请及时绑定邮箱和手机立即绑定

这样理解对吗

def move(n, a, b, c):#定义函数    if n == 1: #在n=1的特殊情况下        print a,'-->',c #直接由a移到c        return None#结束递归,返回空    move(n-1,a,c,b)#n不等于1的情况下,先将n-1块盘由a移到b(a柱上的盘从下往上可排为n,n-1....)    print a,'-->',c#再将a柱上的n盘由a移到c    move(n-1,b,a,c)#最后将b柱上的n-1盘由b移到c move(4, 'A', 'B', 'C') 这样理解对吗

正在回答

4 回答

n ==1不用return none,直接就是打印输出,理解正确.代码写的不对。修改如下:

 move(n-1,a,c,b)#n不等于1的情况下,先将n-1块盘由a移到b(a柱上的盘从下往上可排为n,n-1....)    print a,'-->',b#再将a柱上的最后一盘由a移到c    move(1,a,b,c)#最后将b柱上的n-1盘由b移到c move(n-1,b,a,c)......

0 回复 有任何疑惑可以回复我~

应该是对的啊 !

第一步:将 n-1 个盘子从 a 经过 c 搬运到 b,即move(n-1, a, c, b); 第二步:将 第 n 个盘子 从 a 移到 c,即 print a, '-->', c; 第三步: 将 n-1个盘子从 b 经过 a 搬运到 c,即move(n-1, b, a, c);

0 回复 有任何疑惑可以回复我~

是的,可以这样想。其实你可以用最小化来观察它的规律,再去思考如何写递归,例如像move(n,a,b,c),你可以从n=2,3,4开始观察规律,再将不断重复的动作提取出来,这算是递归的一种变相使用吧,哈哈。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758591    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

这样理解对吗

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信