C語言的漢諾塔代碼可以按照以下方式編寫:
#include <stdio.h>
// 定義移動盤子的函數
void move(int n, char from, char to, char temp) {
if (n == 1) {
printf("Move disk 1 from %c to %c\n", from, to);
return;
}
move(n - 1, from, temp, to);
printf("Move disk %d from %c to %c\n", n, from, to);
move(n - 1, temp, to, from);
}
int main() {
int n;
printf("Enter the number of disks: ");
scanf("%d", &n);
printf("Steps to solve the Hanoi Tower problem:\n");
move(n, 'A', 'C', 'B');
return 0;
}
在這段代碼中,move
函數負責實現漢諾塔的移動邏輯。遞歸地將上方的 n-1 個盤子從 from 桿移動到 temp 桿,然后將最底下的第 n 個盤子從 from 桿移動到 to 桿,最后將之前移動到 temp 桿上的 n-1 個盤子從 temp 桿移動到 to 桿。最后在 main
函數中,用戶輸入盤子的數量,然后調用 move
函數來解決漢諾塔問題。程序會打印出移動每個盤子的步驟。