|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 ChuckCheng 于 2018-9-4 13:35 编辑
看了汉诺塔的视频,想求求每次递归的次数,程序没问题,有个小问题是关于,print的,为什么直接把函数写在print里,显示的次数会是正确的两倍??这是为什么
t=0
def hanoi(n,x,y,z):
global t
if n==1:
t+=1
#print(x,'->',z)##只有一个盘子时直接移动到第三个盘子
else:
hanoi(n-1,x,z,y)##假设已经将所有前n-1个盘子移动y以后
t+=1
#print(x,'->',z)###将最后一个盘子移动到第三个柱子
hanoi(n-1,y,x,z)##然后将前面n-1个盘子从中间的柱子y移动到第三根柱子上
return t
f=hanoi(3,'x','y','z')
print('共计需要%d步' %hanoi(3,'x','y','z')) ## 显示为14步,正确答案的2倍
print(f)#3显示正确答案7步
print('共计需要%d步' %f)##显示7步
|
|