|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 环境过程发明家 于 2020-3-24 10:00 编辑
如题,想在小甲鱼老师写的汉诺塔递归程序上添加统计移动次数的功能(知道次数可以直接打印最终结果2^n-1,但是还是想通过逐次计数来得出结果)
现在写的程序是这样的
time=0
def hanoi(n,start,media,target):
global time
if n == 1:
print(start,"--->",target)
time+=1
else:
hanoi(n-1,start,target,media)
print(start,"--->",target)
time+=1
hanoi(n-1,media,start,target)
return(time)
多次运行时,第一次能得出正确结果(7),第二次以后打印的次数则是在第一次基础上进行的累加(14)(如图)。请问这个程序要怎样修改呢?
- def hanoi(n,start,media,target):
- time=0
- if n == 1:
- print(start,"--->",target)
- time+=1
- else:
- time+=hanoi(n-1,start,target,media)
- print(start,"--->",target)
- time+=1
- time+=hanoi(n-1,media,start,target)
- return(time)
-
- print(hanoi(3,'a','b','c'))
- print(hanoi(3,'a','b','c'))
复制代码
|
|