這道題不是很懂,求解釋代碼
我知道這個解法就是把除了最底下的(n-1)個盤移動到b然后最下面的盤移動到c最后再把那些(n-1)個盤移動到c問題是這個代碼怎么寫我不會,看了答案有點不明白為什么在 move(n-1,a,c,b)之后就打印a到c不是這一步只是把n-1個盤子移動從a借助c移動到b,然后再移動最后一個盤子到c嗎怎么就直接a到c,還有這里的a到c到底是指的是什么以及最后一步不應該是要把最下面的碟子移動到c嗎為什么沒寫只寫了n-1個盤子移動到c就沒了。還有最后一行的那個move(4,‘A’,'B',‘C’)是什么意思,帶入n等于4的時候跑一遍程序嗎還有為什么這里的ABC要加引號
還有右邊的指向箭頭比如A-》C是什么意思
還有最后我這里還有什么問題為什么說我的輸出錯誤
2019-07-21
A,B,C,分別表示1號柱子、2號柱子、3號柱子,現在假設是把1號柱子上的所以盤子,根據規則移動到3號柱子,其實移動到哪個都可以。所以遞歸開始,假設就一個盤子,那把1號柱子作為地點,3號柱子作為重點,只要移動一次就可以了,那就是表示我A --> C,然后開始遞歸,如果有2個盤子,那我們就要借助2號柱子,先把第一個盤子移動2號柱子(B),然后再把2號盤子(比第一個大的盤子)移動到3號柱子,所以在遞歸n? > 1的情況下,有一個print A --> C的過程,那之前n-1個盤子,是如何移動2號柱子暫存的呢,同樣道理,是通過3號柱子作為中間柱子來完成的,所以遞歸 move(n-1, 'A' , 'C',? 'B' ),當把最大的一個盤子由A移動到C完成后(print A --> C),還需要把在B柱子上暫存的n-1個盤子移動C柱子才可以啊,這是可以想到把A柱子作為中間柱子,所以下面的移動就是move(n-1, 'B', 'A', 'C');這樣遞歸就完成了。如果程序中能打印出移動的次數和移動的盤子序號(假設盤子由1號到n號,1號最新,依次類推),結果就更清新,例如,有2個盤子,移動過程:
第1次移動,移動第1塊圓盤,A-->B
第2次移動,移動第2塊圓盤,A-->C
第3次移動,移動第1塊圓盤,B-->C
如果有3塊盤子,移動的過程為:
第1次移動,移動第1塊圓盤,A-->C
第2次移動,移動第2塊圓盤,A-->B
第3次移動,移動第1塊圓盤,C-->B
第4次移動,移動第3塊圓盤,A-->C? ? # 前面的2塊盤子已經都移動B柱子上,所以直接把第3塊移動到C就可以了;
第5次移動,移動第1塊圓盤,B-->A
第6次移動,移動第2塊圓盤,B-->C
第7次移動,移動第1塊圓盤,A-->C
2019-09-30
對不起 我智障了 不要理我
2019-09-30
2019-09-13
我的問題是 print (a,'-->',c)這個動作為什么能輸出不同的結果
2019-07-21
A,B,C,分別表示1號柱子、2號柱子、3號柱子,現在假設是把1號柱子上的所有盤子,根據規則移動到3號柱子,其實移動到哪個都可以。所以遞歸開始,假設就一個盤子,那把1號柱子作為起點,3號柱子作為終點,只要移動一次就可以了,那就是表示為 A --> C,然后開始遞歸,如果有2個盤子,那我們就要借助2號柱子,先把第一個盤子移動到2號柱子(B),然后再把2號盤子(比第一個大的盤子)移動到3號柱子,所以在遞歸n? > 1的情況下,有一個print A --> C的過程,那之前n-1個盤子,是如何移動到2號柱子暫存的呢,同樣道理,是通過3號柱子作為中間柱子來完成的,所以遞歸 move(n-1, 'A' , 'C',? 'B' ),當把最大的一個盤子由A移動到C完成后(print A --> C),還需要把在B柱子上暫存的n-1個盤子移動C柱子才可以啊,這時可以想到把A柱子作為中間柱子,所以下面的移動就是move(n-1, 'B', 'A', 'C');這樣遞歸就完成了。如果程序中能打印出移動的次數和移動的盤子序號(假設盤子由1號到n號,1號最小,依次類推),結果就更清新,例如,有2個盤子,移動過程:
第1次移動,移動第1塊圓盤,A-->B
第2次移動,移動第2塊圓盤,A-->C
第3次移動,移動第1塊圓盤,B-->C
如果有3塊盤子,移動的過程為:
第1次移動,移動第1塊圓盤,A-->C
第2次移動,移動第2塊圓盤,A-->B
第3次移動,移動第1塊圓盤,C-->B
第4次移動,移動第3塊圓盤,A-->C? # 前面的2塊盤子都已經移動到B柱子上,所以直接把第3塊移動到C就可以了;
第5次移動,移動第1塊圓盤,B-->A
第6次移動,移動第2塊圓盤,B-->C
第7次移動,移動第1塊圓盤,A-->C
2019-07-21
遞歸就只有1和n-1就可以了,有n,n-1,……,一直到1為止,如果還要寫n-2,那就不是遞歸的思想了。
2019-07-20
個人理解:n=4這個4是迭代次數。ABC加引號說明是字符串,我們設置函數的時候是設置的abc,然后我們用這個函數的時候,‘A’‘B’‘C’就是我們輸入的參數,分別對應a,b,c,你可以把它們換成張三李四王二看看效果是一樣的。你可以百度一下漢諾塔問題去了解一下關于盤子為什么這么移動。
2019-07-20
我的理解
2019-07-20
我認為的是字符串是需要加單引號的 N應該代表個數? ?你6行應該是要把“->”變成‘-->’應該就可以了