python汉诺塔实践报告,Python实现汉诺塔
问题:汉诺威递归算法的时间复杂度
算法如下。
说明:size表示汉诺威的规模,startStack表示汉诺威的开始,endStack表示完成,midStack表示辅助。
defTowers(大小、开始堆栈、结束堆栈、中间堆栈) :
如果大小==1:
打印将磁盘从,第一个堆栈,到,最后一个堆栈
否则:
塔(尺寸-1,第一堆栈,中间堆栈,末端堆栈).
塔(1,第一堆,末端堆,中间堆).
塔(尺寸-1,中间堆叠,末端堆叠,第一堆叠).
解析:设问题规模为n,t(n)为问题规模的必经步骤,
t(n)=1t)1)2t(n-1)/小数位数为n-1时通过两次,所以变成2t) n-1)。
=122t(n-1 )//因为小数位数为1时需要2步,t )1)=2
=32[32t(n-2)] //当刻度为n-2时,重复上述操作。
=94t(n-2)).
=94[32t(n-3 ) ]
=218t(n-3))。
=C2^kt(n-k)))
在n-k=1条件下,得到k=n-1,
t(n)=C2)n-1)t)1)/其中t )1)=2
t(n )=C 2^n
总体而言,汉诺威的时间复杂度为O (2 n)
注意:算法是用Python语言写的。
Python的详细介绍:点击这里
Python下载地址:点击这里
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。