鱼C论坛

 找回密码
 立即注册
查看: 1740|回复: 4

[已解决]关于汉诺塔游戏的问题

[复制链接]
发表于 2020-11-13 00:26:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

  if n == 1:

        print(a, '-->', c)

    else:

        move(n-1, a, c, b)

        move(1, a, b, c)

        move(n-1, b, a, c)
这段代码中我一直想不明白为什么python可以理解move(n-1, a, c, b)这一段,就是把c跟b换一个位置然后python可以输出A --> B,
百度了没找到答案,有也是解释代码为什么这么写,但我还是不明白为什么abc能换掉位置,可能是我蠢吧 = =!
最佳答案
2020-11-13 08:41:43
这个是递归调用是么,我理解的是原本函数中move(n,a,b,c)中的a,b,c可以看做是形式参数,调用时的n-1,b,a,c可以看做是调用函数时的实际参数。
譬如举个例子:
def mod(x,y):
    return x%y

y = int(input("输入正整数1:"))
x = int(input("输入正整数2:"))
result = mod(y,x)
print("余数是:%d "%result)

这个样子吧……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-13 08:41:43 | 显示全部楼层    本楼为最佳答案   
这个是递归调用是么,我理解的是原本函数中move(n,a,b,c)中的a,b,c可以看做是形式参数,调用时的n-1,b,a,c可以看做是调用函数时的实际参数。
譬如举个例子:
def mod(x,y):
    return x%y

y = int(input("输入正整数1:"))
x = int(input("输入正整数2:"))
result = mod(y,x)
print("余数是:%d "%result)

这个样子吧……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-13 08:43:55 | 显示全部楼层
我一直认为是 因为 变量名产生的认知干扰,同一字母,小写的是变量名,大写的是 值,把变量名换一个自己比较好理解的名字,再去一步步的解读比较好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-13 18:29:40 From FishC Mobile | 显示全部楼层
羽翮 发表于 2020-11-13 08:41
这个是递归调用是么,我理解的是原本函数中move(n,a,b,c)中的a,b,c可以看做是形式参数,调用时的n-1,b,a,c ...

说到形式参数和实际参数就明白了,函数赋值以后,函数里的a就是A,b就是B,c=C,所以在下面的代码中更换参数位置就可以,谢谢解答。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-13 18:30:12 From FishC Mobile | 显示全部楼层
LuLD 发表于 2020-11-13 08:43
我一直认为是 因为 变量名产生的认知干扰,同一字母,小写的是变量名,大写的是 值,把变量名换一个自己比 ...

谢谢解答。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 22:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表