#include <iostream>
int hanoi(char a, char b, char c, int n, int time);
int main()
{
int n;
printf("Input the number of diskes:");
scanf_s("%d", &n);
int time = 0;
time = hanoi('A', 'B', 'C', n, time);
printf("\n移动次数:time = %d", time);
}
//Hanoi塔(汉诺塔):a,b,c表示三根柱子,n表示有几个圆盘,time表示移动的次数
//将a柱子上的盘子借助b柱子移动到c柱子
int hanoi(char a, char b, char c, int n, int time)
{
if (1 == n)
{
//如果是一个盘子直接将a柱子上的盘子移动到c
printf("%c-->%c\n", a, c);
time++;
return time;
}
else
{
//将a柱子上n-1个盘子借助c柱子,移动到b柱子
time = hanoi(a, c, b, n - 1, time);
//再直接将a柱子上的最后一个盘子移动到c
printf("%c-->%c\n", a, c);
time++;
//然后将b柱子上的n-1个盘子借助a移动到c
time = hanoi(b, a, c, n - 1, time);
}
}