欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言 函数递归解决汉诺塔问题《经典》

程序员文章站 2024-03-24 15:26:46
...

C语言解决汉诺塔问题《经典》

首先要知道汉诺塔是怎么一个问题
例如A 、B、 C 三个柱子,A柱子上假如放有三个盘子,最上边是最小的,最下边是最大的盘子;现在想让A柱子借助B柱子将三个盘子移入到C柱子上,《且每次只能移动一个盘子,而且要最后在C柱子上的盘子按从大到小依次堆起来》;这里有用到函数,用函数递归实现了汉诺塔问题。
代码实现如下:

// hanoi.cpp : Defines the entry point for the console application.
//

#include <stdio.h>
#include "stdafx.h"

void hanoi(int n, char A, char B, char C)  //n代表盘子数
{
	if(n==1)
		printf("%c--->%c\n",A, C);
	else
	{
		hanoi(n-1, A, C, B);  //A绕过C去到B上
		printf("%c--->%c\n", A, C);
		hanoi(n-1, B, A, C);
	}
}
int main(int argc, char* argv[])
{
	hanoi(3, 'A', 'B', 'C');
	return 0;
}

例如代码所示,如果是三个盘子,移动到C柱子上的步骤为:
C语言 函数递归解决汉诺塔问题《经典》
不管几个盘子,这个代码都可以实现。只需要改变“hanoi(3, ‘A’, ‘B’, ‘C’);”里的3数字即可