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);
    
    printf("Steps to solve the Hanoi Tower problem:\n");
    hanoi(n, 'A', 'C', 'B');
    
    return 0;
}

このプログラムでは帰納を使用してハノイの塔の問題を解きます。hanoi関数は4つの引数を取ります。nはディスクの数、fromは開始柱、toは目標柱、auxは補助柱を表します。nが1の場合、ディスクは開始柱から目標柱に直接移動されます。nが1より大きい場合、n-1個のディスクが開始柱から補助柱に移動され、n番目のディスクが開始柱から目標柱に移動され、最後にn-1個のディスクが補助柱から目標柱に移動されます。このプロセスはhanoi関数を再帰的に呼び出すことで実現されています。

プログラムの起動関数mainでは、最初にユーザから皿の数を読み取ります。次に、ハノイの問題を解決するためにhanoi関数を呼び出し、各段階での皿の移動をプリントします.

プログラムを実行すると、皿の数を要求された後、ハノイの塔問題の解法の手順が出力されます。

bannerAds