汉诺塔c语言

导读 以下是用 C 语言实现的汉诺塔问题算法的代码示例:```c#include void moveDisk(int n, char from, char to, char via) { ...

以下是用 C 语言实现的汉诺塔问题算法的代码示例:

```c

#include

void moveDisk(int n, char from, char to, char via) {

if (n == 1) { //只有一个盘子的情况

printf("Move disk 1 from %c to %c\n", from, to);

return;

} else { //有多个盘子的情况

moveDisk(n - 1, from, via, to); //将上面的盘子从起始柱移动到中间柱子上

printf("Move disk %d from %c to %c\n", n, from, to); //将底下的盘子从起始柱子移动到目标柱子上

moveDisk(n - 1, via, to, from); //将中间柱子上的盘子移动到目标柱子上

}

}

int main() {

int n; // 盘子的数量

printf("Enter the number of disks: ");

scanf("%d", &n); // 输入盘子的数量

moveDisk(n, 'A', 'C', 'B'); // A 为起始柱子,C 为目标柱子,B 为中间柱子

return 0;

}

```

在这个示例代码中,我们定义了一个 `moveDisk` 函数来实现汉诺塔问题的递归解法。在函数中,我们首先判断只有一个盘子的情况,然后递归调用 `moveDisk` 函数来将上面的盘子从起始柱子移动到中间柱子上,再将底下的盘子从起始柱子移动到目标柱子上,最后将中间柱子上的盘子移动到目标柱子上。最后在主函数中,我们通过调用 `moveDisk` 函数来实现汉诺塔问题的求解。

版权声明:本文由用户上传,如有侵权请联系删除!