|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
def hanoi(n,x,y,z):##1.这里逻辑能够搞懂 但是函数的设置搞不太懂 n,x,y,z分别是什么类型的参数??
if n == 1:
print(x,'-->',z)
else:
hanoi(n-1,x,z,y) ##先把n-1个从x移到y,在这里位置参数z给了y,原来的z变成了辅助柱子
print(x,'->',z) ##把x移动到z
hanoi(n-1,y,x,z)##把y上的n-1个移动到z上,那么y就看做第一个位置
n = int(input('请输入:'))
print(hanoi(n,'X','Y','Z')) ##2.这里的'X','Y','Z'又是什么类型的参数,是赋值给了x,y,z 嘛??
def kk(x,y):
print(kk('Y','X'))
>>> kk(x,y)
Traceback (most recent call last): ##3.请问这里为什么会报错
File "<pyshell#266>", line 1, in <module>
kk(x,y)
NameError: name 'x' is not defined
1.四个参数(汉诺塔层数,起始位置,中间位置,结束位置)
只有n是整型,剩下的三个参数可以是任意类型,只要他能表示三根柱子就可以了。
2.这里是赋值给了x,y,z,也就是x='x',y='y',z='z',拿这三个字母来代表这三根柱子。你要是不喜欢的话可以hanoi(n,1,2,3) 这样是拿整型来表示三根柱子
3.报错的原因有两条,首先x没有赋值,其次超过了递归的最大深度。也就是说,你传入一个参数的话会一直递归,像两面面对面的镜子,没有尽头
你需要学习一下实参和形参的区别,这样能加深你对参数的理解
|
|