【c】汉诺塔递归

174 阅读1分钟

从左到右有A、B、C三根柱子,其中A柱子上 面有从小叠到大的n个圆盘,现要求将A柱子上的圆盘移到 C柱子上去,期间只有一个原则:一次只能移到一个盘子且 大盘子不能在小盘子上面,求移动的步骤

#include <stdio.h>

int HanNuoTa(int n, char Src, char Dst, char Tmp)
{
	if (1 == n)
	{
		printf("%c -> %c\n", Src, Dst);
	}
	else
	{
		HanNuoTa(n-1, Src, Tmp, Dst);
		printf("%c -> %c\n", Src, Dst);
		HanNuoTa(n-1, Tmp, Dst, Src);
	}

	return 0;
}

int main(int argc, const char *argv[])
{
	int n = 0;

	printf("请输入盘子的个数:\n");
	scanf("%d", &n);

	HanNuoTa(n, 'A', 'C', 'B');

	return 0;
}