关于汉诺塔的移动次数,有一个地方不懂。
#include "stdio.h"void move(char a,char b)/
{
printf("%c->%c\n",a,b);
}
void hanoi(int n,char a,char b,char c, int *count)//为什么这里用个指针变量来记录次数?
{
if(n==1)
{
move(a,c);
(*count)++;
}
else
{
hanoi(n-1,a,c,b,count);
move(a,c);
(*count)++;
hanoi(n-1,b,a,c,count);
}
}
void main()
{
int n, count = 0;
printf("Input the number:");
scanf("%d",&n);
printf("\n");
hanoi(n,'A','B','C', &count);//为什么要传个地址?
printf("步数:%d\n", count);
}