相信每一次學(xué)習(xí)C語言的同學(xué)都會遇到獲諾塔問題,我學(xué)習(xí)C語言也已經(jīng)有一段時間了,最近遇到了這個經(jīng)典的問題,下面來總結(jié)一下!!
盤子個數(shù)n | 步驟次數(shù) |
1 | 1 |
2 | 3 |
3 | 7 |
4 | 15 |
...... | ...... |
64 | 2^64-1 |
...... | ...... |
n | 2^n-1 |
我們可以計算一下,如果要移動64個盤子,所需要的時間是多少?假設(shè)這個小和尚十分聰明,每秒鐘移動一個盤子,所需時間:(2^64-1)/3600/24/365=584942417355.07203243911719939117
可以看出挪完64個盤子需要耗費(fèi)5000多億年,這顯然是不現(xiàn)實(shí)的,所以我們僅討論移盤子的步驟算法就可以。
分治:可以將n-1層移到中轉(zhuǎn)位置上,然后將最下面的大的盤子移到目標(biāo)位置上,再把n-1個盤子移到目標(biāo)位置。
完整代碼:
//漢諾塔
void move(char pos1, char pos2)
{
printf("%c->%c ", pos1, pos2);
}
// n代表盤子的個數(shù)
// POS1代表起始位置
// POS2代表中轉(zhuǎn)位置
// POS3代表目的位置
void Hanoi(int n, char pos1, char pos2, char pos3)
{
if (n == 1)
move(pos1, pos3);
else
{
Hanoi(n-1, pos1, pos3, pos2);
move(pos1, pos3);
Hanoi(n-1, pos2, pos1, pos3);
}
}
int main()
{
int n = 0;
scanf("%d", &n);//盤子個數(shù)
Hanoi(n, 'A', 'B', 'C');//A柱 B柱 C柱
return 0;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站題目:漢諾塔C語言遞歸實(shí)現(xiàn)-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://www.sd-ha.com/article46/dgjjhg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、定制網(wǎng)站、企業(yè)建站、網(wǎng)站排名、手機(jī)網(wǎng)站建設(shè)、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)