專案功能需求
古代有一個梵塔,塔內有A,B,C三座塔,A塔上有64個大小不等的盤子,大的在下,小的在上。把64個盤子從A全部移到C,可以借助A,B或C塔,但每次只能移動一個盤子,并且不允許大盤放到小盤上。
演算法思想
第一步,將上面n-1個盤子從A,借助C移動到B;
第二步,將第n個盤子從A移動到C;
第三步,將n-1個盤子再從B,借助A移動到C。
專案實作
/****************漢羅塔**********************************/
#include <stdio.h>
void Hanoi(int ,char,char,char);//Hanoi函式宣告
int n = 0;//記錄移動步數
void main()
{
int num;
printf("請輸入盤子個數:");
scanf("%d",&num);
printf("========================\n");
Hanoi(num, 'A', 'B', 'C');//呼叫Hanoi函式
printf("========================\n");
}
void Hanoi(int num,char a, char b, char c)
{
if(num == 1)
{//將第一個盤子直接從a移到b
printf("Step%3d:%c-->%c\n",++n,a,c);
}
else
{
Hanoi(num-1,a,c,b);//將n-1個盤子從a借助c移到b
printf("Step%3d:%c-->%c\n",++n,a,c);//將第n個盤子從a移到c
Hanoi(num-1,b,a,c);//將n-1個盤子從b借a移到c
}
}
運行效果

uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
做筆記?可以考慮使用印象或有道筆記~uj5u.com熱心網友回復:
挺好的啊。。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/270031.html
標籤:C語言
上一篇:37個人圍城一圈,編上號碼(1~37),第一個人從1數起,數到5的人被淘汰,接下來的人繼續數,最后剩下的人為贏家
