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柱子上的步骤为:
不管几个盘子,这个代码都可以实现。只需要改变“hanoi(3, ‘A’, ‘B’, ‘C’);”里的3数字即可