汉诺塔问题c语言变式
时间: 2024-06-24 20:00:50 浏览: 123
汉诺塔问题是经典的递归问题,通常用三个柱子和一堆圆盘(从大到小排列)来描述,目标是将所有圆盘移动到另一个柱子,但每次只能移动一个圆盘,并且任何时候都不能让大盘子位于小盘子之上。在C语言中,你可以使用递归来解决这个问题。以下是一个简单的C语言实现:
```c
#include <stdio.h>
void hanoi(int n, char from_rod, char to_rod, char aux_rod) {
if (n > 0) {
// Move n-1 disks from 'from_rod' to 'aux_rod' using 'to_rod'
hanoi(n - 1, from_rod, aux_rod, to_rod);
// Move the nth disk from 'from_rod' to 'to_rod'
printf("Move disk %d from rod %c to rod %c\n", n, from_rod, to_rod);
// Move the n-1 disks that we left on 'aux_rod' to 'to_rod' using 'from_rod'
hanoi(n - 1, aux_rod, to_rod, from_rod);
}
}
int main() {
int num_disks; // 假设用户输入圆盘的数量
printf("Enter number of disks: ");
scanf("%d", &num_disks);
hanoi(num_disks, 'A', 'C', 'B'); // A: start rod, C: target rod, B: auxiliary rod
return 0;
}
```
阅读全文