首先明白递归是自己调用自己
而就是考虑第n项和
前(n-1)项
(看成一个整体)
对于常规的汉诺塔来说首先输入n个盘子,然后从而输出Hanoi(n)
#include<bits/stdc++.h>
using namespace std;
long long hanoi(int n)
{
if(n==1)
return 1;
else
return 2*hanoi(n-1)+1;//调用(n-1),2*Hanoi(n-1)为前n-1项由A移动到C时所用的步数,而+1则是第n项运动到C的步数。
}
int main()
{
int n;
while(cin>>n)
{
cout<<hanoi(n)<<endl;
}
}
而对于杭电oj2064题