以下是使用C語言編寫漢諾塔程序的示例代碼:
#include <stdio.h>
void hanoi(int n, char from, char to, char aux) {
if (n == 1) {
printf("Move disk 1 from %c to %c\n", from, to);
return;
}
hanoi(n-1, from, aux, to);
printf("Move disk %d from %c to %c\n", n, from, to);
hanoi(n-1, aux, to, from);
}
int main() {
int n;
printf("Enter the number of disks: ");
scanf("%d", &n);
printf("Steps to solve the Hanoi Tower problem:\n");
hanoi(n, 'A', 'C', 'B');
return 0;
}
在這個程序中,我們使用遞歸來解決漢諾塔問題。hanoi
函數接受四個參數:n
表示盤子的數量,from
表示起始柱子,to
表示目標柱子,aux
表示輔助柱子。當n為1時,我們直接將盤子從起始柱子移動到目標柱子上。對于n大于1的情況,我們將n-1個盤子從起始柱子移動到輔助柱子上,然后將第n個盤子從起始柱子移動到目標柱子上,最后將n-1個盤子從輔助柱子移動到目標柱子上。這個過程通過遞歸調用hanoi
函數來實現。
在main
函數中,我們首先從用戶輸入中獲取盤子的數量。然后調用hanoi
函數來解決漢諾塔問題,并打印每一步的移動過程。
運行程序后,它會要求你輸入盤子的數量,然后輸出解決漢諾塔問題的步驟。