|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- def hanoi(n,x,y,z): #n代表盘子数量,x,y,z代表相应柱子
- global count #申明为全局变量,统计一共要移动盘子的次数
- count += 1
- if n == 1: #递归结束条件
- print('%c->%c'%(x,z))
- else:
- hanoi(n-1,x,z,y) #将n-1盘子从x借助z移动到y(第一步,复杂,需调用函数)
- print('%c->%c'%(x,z)) #将最后一个盘子从x移动到z(第二步,较为简单,直接打印)
- hanoi(n-1,y,x,z) #将n-1盘子从y借助x移动到z(第三步,复杂,需调用函数)
- count = 0
- hanoi(64,'x','y','z')
- print('一共需要移动盘子的次数为%d次!'%count)
复制代码
问题:
0、假定f(n)是这个函数,可以吗?函数的变量只有n,对吗?
1、f(n)=hanoi(n,x,y,z)的具体内容是什么?
是默认输出 x->z 吗?是输出移动轨迹 n右1---n右3?
是三个步骤组成的函数吗?
2、在定义f(n)的时候用了f(n-1),我能理解,但是hanoi(n-1,x,z,y) 为什么更换y,z的位置?
是想让输出结果,按照规律n右1---n右3,输出x->y吗?
3、hanoi(64,'x','y','z')里面,x y z为什么加引号?函数定义的时候,为什么没有要求加呢? |
|