根据汉诺塔的递归定义
void hanoi(int n,...)
if(n==1)
move(1,...);
else
{
hanoi(n-1,...);
move(n,...);
hanoi(n-1,...);
}
由此可见,函数在n=1时执行一次move函数后退出,在非1时,执行一次move并执行两次n-1规模的递归
设盘子数为 n n n时的移动次数为 T ( n ) T(n) T(n) ,易得递推公式
T ( n ) = { 2 T ( n − 1 ) + 1 n ≥ 2