现在用递归
代码:
#include<iostream>
using namespace std;
int sum = 0;//统计所有的移动次数
void move(char start,char end);
void hanoi(int n,char a,char b,char c)
{
if( n == 1) //递归跳出
move(a,c);
else
{
hanoi(n-1,a,c,b);//把n-1个盘子从a通过c移到b
move(a,c);
hanoi(n-1,b,a,c);//把n-1个盘子从b通过a移到c
}
}
void move(char start,char end)//输出每一步函数
{
cout<<start<<"→→→"<<end<<endl;
sum++;
}
int main()
{
hanoi(5,'a','b','c');//注意这里的字符,因为hanoi函数定义的参数是字符
cout<<sum<<endl;
return 0;
}