汉诺塔是递归中的经典问题,很多人虽然懂得如何写汉诺塔的代码,但是并不能够完整地明白汉诺塔代码的调用逻辑。作者花了点时间,画了一张流程图,希望能够帮大家理解。
先上代码:
#include"stdio.h"
void hanoi(int n, char a, char b, char c)
{
if (n == 0)
{
return;
}
hanoi(n - 1, a, c, b);
printf("move %d from %c->%c\n", n, a, c);
hanoi(n - 1, b, a, c);
}
int main()
{
int n;
while (scanf("%d", &n))
{
hanoi(n, 'A', 'B', 'C');
}
}
然后是当n=3时的流程图:
欢迎大家收藏图片。