汉诺塔一共为2*N,2个一样大小,有编号顺序每次只能移动一个大的不能叠在小得上面移动完之后,相同大小的编号必须和原来一样问最小要移动多少次?如A1 A2 B1 B2 C1 C2……这样叠,A
#include
void move(int n,char a,char b,char c) { if(n==1)
printf("\t%c->%c\n",a,c);
//当n只有1个的时候直接从a移动到c else {
move(n-1,a,c,b); //第n-1个要从a通过c移动到b
printf("\t%c->%c\n",a,c);
move(n-1,b,a,c); //n-1个移动过来之后b变开始盘,b通过a移动到c,这边很难理解
} } main() { int n; printf("please put
in the number you need to move:\n");
scanf("%d",&n); move(n,'a','b','c'); }