由题意得:
1.与传统的汉诺塔相比 多了一个限制——每次只能移动的相邻的杆上
2.当“n”为“2”时,次数为“8” 从前三项的次数 “2 8 26”中不难得出推导公式 F[n]=3*F[n-1]+2
3.递归很耗时,容易超时,最好不用
4.代码如下:
#include<iostream>
using namespace std;
long long hanoi(int n)
{
long long f[40];
f[1]=2;
for(int i=2; i<=35; i++)
f[i]=3*f[i-1]+2;
return f[n];
}
int main()
{
int n,i;
while(cin>>n)
cout<<hanoi(n)<<endl;
return 0;
}