c语言用递归算法求汉诺塔
时间: 2023-11-21 07:06:55 浏览: 98
c语言实现递归汉诺塔
汉诺塔问题是一个经典的递归问题,可以用递归算法来解决。下面是用C语言实现汉诺塔的递归算法的步骤:
1.定义一个函数Hanoi,它有四个参数:n表示盘子的数量,POS1、POS2、POS3分别表示三个柱子的名称,其中POS1是起始柱子,POS3是目标柱子,POS2是中间柱子。
2.在函数Hanoi中,首先需要判断递归终止条件,即当n等于1时,直接将起始柱子上的盘子移动到目标柱子上。
3.如果n大于1,则需要将n-1个盘子从起始柱子移动到中间柱子上,然后将最后一个盘子从起始柱子移动到目标柱子上,最后将n-1个盘子从中间柱子移动到目标柱子上。
下面是C语言实现汉诺塔的递归算法的代码:
```
void Hanoi(int n, char POS1, char POS2, char POS3) {
if (n == 1) {
move(POS1, POS3);
} else {
Hanoi(n-1, POS1, POS3, POS2);
move(POS1, POS3);
Hanoi(n-1, POS2, POS1, POS3);
}
}
```
其中,move函数表示将一个盘子从起始柱子移动到目标柱子上。
阅读全文