Hanoi漢諾塔

#漢諾塔#
代碼

#include <iostream>
#include <stdio.h>
using namespace std;

//漢諾塔函數,參數,n剩餘棋子數,prime棋子初始所在杆,help移動棋子需要藉助的杆,target最終移動的目標杆
void hanoi(int n, char prime, char help, char target){
    if (n == 1){                                //如果只剩一個棋子,就直接從原來的位置移動到目標位置
        printf("%c->%c\n",prime, target);


    }else{
        hanoi(n-1, prime, target, help);         //如果棋子數大於1,就先調用移動上面n-1個棋子的函數,將n-1個棋子移動到help位置上

        printf("%c->%c\n", prime, target);       //然後將第n個從初始位置移動到目標位置

        hanoi(n-1, help, prime, target);         //到此時,n-1個棋子在help位置上,再調用將這n-1個棋子移動到target位置上的函數
    }
}


int main()
{
    int n = 0;                  //漢諾塔棋子數

    scanf("%d", &n);

    hanoi(n,'a','b','c');      //第一次調用

    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章