下面是一個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);
hanoi(n, 'A', 'C', 'B');
return 0;
}
以上代碼使用遞歸的方式實現了漢諾塔問題的解決方法。函數hanoi
接受參數n
表示當前要移動的盤子數量,from
表示起始柱子,to
表示目標柱子,aux
表示輔助柱子。在每次遞歸中,將n-1個盤子從起始柱移動到輔助柱,然后將最后一個盤子從起始柱移動到目標柱,最后將n-1個盤子從輔助柱移動到目標柱。主函數中輸入盤子數量并調用hanoi
函數進行求解。