|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
def hnt(n,a,b,c):
if n==1:
print(a,'成',c)
else:
ba(n-1,a,c,b)
print(a,'到',c)
ba(n-1,b,a,c)
hnt(3,'a','b','c')
有没有朋友能把程序执行的步骤写一下,看不懂,晕了半天啊
具体想原理就行。刚看过。
假设N>1 , 那么当N个盘子在a柱子上时,你遇到的问题就是hnt(n,a,b,c)。
注意,这里的a,b,c不是指柱子的绝对位置,而是柱子的作用。a代表起始柱子,b代表过渡柱子,c代表最终到达的柱子。
那么,为了进行迭代,我需要把问题变成 hnt(n-1,a,b,c)的形式~(类似于高中数学的数学归纳法。)
如何变到这一步,需要分三步(假设柱子的位置是X、Y、Z):
1.首先,讲前n-1个盘子从X移到Y. 可以表示为 hnt(n-1,a,c,b)
2.将第n个盘子由a移到c,也就是直接打印“ a--》c”
3.将第n-1个盘子由b移到c,也就表示成为hnt(n-1,b,a,c)
这样的话就实现了迭代的重复过程。。
|
|