C言語でハノイの塔を実装する方法は何ですか。

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(補助柱)の4つのパラメータを受け取ります。

再帰の終了条件は、nが1の場合、直接、皿を元の柱から目標の柱に移動します。そうでない場合、n-1個の皿を最初の柱から補助柱に移動し、最後の1つの皿を最初の柱から目標の柱に移動させ、最後にn-1個の皿を補助柱から目標の柱に移動させます。

main関数では、ユーザーが移動させたい円盤の数を入力し、その後hanoi関数を呼び出して移動操作を実行します。

注意:上記のコードはサンプルであり、入力の検証やエラー処理は行われておりません。実際のアプリケーションでは、入力の有効性とエラー処理を考慮する必要があります。

bannerAds