当然是果断递归!!!程序中需要注意的点在于递归的时候从哪个柱子拿出,哪个柱子放进,哪个柱子辅助会有变化。
上代码:
#include <iostream>
using namespace std;
int main(void)
{
void movedisk(int,char,char,char);
int n;
cout<<"please input the number of disk:"<<endl;
cin>>n;
movedisk(n,'A','B','C');
return 0;
}
void movedisk(int n,char fromtower,char auxtower,char totower)
{
if(n==1) cout<<"move disk "<< n <<" from "<< fromtower <<" to "<< totower <<endl;
else
{
movedisk(n-1,fromtower,totower,auxtower);
cout<<"move disk "<< n <<" from "<< fromtower <<" to "<< totower <<endl;
movedisk(n-1,auxtower,totower,fromtower);
}
}