亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

麻煩幫忙解釋一下漢諾塔的代碼,以n=3為例,寫下遞歸的具體的執行步驟

麻煩幫忙解釋一下漢諾塔的代碼,以n=3為例,寫下遞歸的具體的執行步驟

#include <stdio.h>void move(int n, char A, char B,char C){??? if(n==1)??????? printf("Move disk %d from %c to %c\n", n, A, C);??? else??? {??????? move(n-1, A, C, B);??????? printf("Move disk %d from %c to %c\n", n, A, C);??????? move(n-1, B, A, C);??? }}int main(){??? int n;??? scanf("%d",&n);??? move(n,'A','B','C');??? return 0;}
查看完整描述

1 回答

?
0puppy0

TA貢獻24條經驗 獲得超7個贊

當只有一個盤子的時候,只需要從將A塔上的一個盤子移到C塔上。

??????????? 當A塔上有兩個盤子是,先將A塔上的1號盤子(編號從上到下)移動到B塔上,再將A塔上的2號盤子移動的C塔上,最后將B塔上的小盤子移動到C塔上。

??????????? 當A塔上有3個盤子時,先將A塔上編號1至2的盤子(共2個)移動到B塔上(需借助C塔),然后將A塔上的3號最大的盤子移動到C塔,最后將B塔上的兩個盤子借助A塔移動到C塔上。

?????????? 當A塔上有n個盤子是,先將A塔上編號1至n-1的盤子(共n-1個)移動到B塔上(借助C塔),然后將A塔上最大的n號盤子移動到C塔上,最后將B塔上的n-1個盤子借助A塔移動到C塔上。

????????? 綜上所述,除了只有一個盤子時不需要借助其他塔外,其余情況均一樣(只是事件的復雜程度不一樣)。


查看完整回答
反對 回復 2016-12-29
  • 1 回答
  • 0 關注
  • 1261 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號