漢諾塔(代碼記錄+注釋)


//漢諾塔問題 
//輸出移動的步驟 
#include <stdio.h>
//記錄步數 
int i = 1; 
//n 第幾號盤移動, from 移動塔  to 目標塔 
void move(int n, char from,char to){
    printf("第%d次移動第%d號盤: %c----->%c\n",i++,n,from,to); 
} 

void hanoi(int n,char from,char mid,char to){
    if(n==1){
        move(n,from,to);//只有一個盤子是直接將初塔上的盤子移動到目的地
    }else{
        hanoi(n-1,from, to, mid);//先將初始塔的前n-1個盤子借助目的塔移動到借用塔上
        move(n,from,to);        //將剩下的一個盤子移動到目的塔上
        hanoi(n-1,mid, from,to);//最后將借用塔上的n-1個盤子移動到目的塔上
    }
}

int main(){
    printf("請輸入盤子的個數:\n");
    int n;
    scanf("%d",&n);
    char x='A',y='B',z='C';
    printf("盤子移動情況如下:\n");
    hanoi(n,x,y,z);
    return 0 ; 
} 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM