這樣理解對嗎
def move(n, a, b, c):#定義函數 ? ?if n == 1: #在n=1的特殊情況下 ? ? ? ?print a,'-->',c #直接由a移到c ? ? ? ?return None#結束遞歸,返回空 ? ?move(n-1,a,c,b)#n不等于1的情況下,先將n-1塊盤由a移到b(a柱上的盤從下往上可排為n,n-1....) ? ?print a,'-->',c#再將a柱上的n盤由a移到c ? ?move(n-1,b,a,c)#最后將b柱上的n-1盤由b移到c move(4, 'A', 'B', 'C') 這樣理解對嗎
2022-03-23
對的,github的代碼更新了。一:在html標簽中,注釋格式為<!------->二:在樣式表中,注釋格式為/*-----------*/三:在程序代碼中,注釋格式為//
2017-12-12
n ==1不用return none,直接就是打印輸出,理解正確.代碼寫的不對。修改如下:
?move(n-1,a,c,b)#n不等于1的情況下,先將n-1塊盤由a移到b(a柱上的盤從下往上可排為n,n-1....) ? ?print a,'-->',b#再將a柱上的最后一盤由a移到c ? ?move(1,a,b,c)#最后將b柱上的n-1盤由b移到c move(n-1,b,a,c)......
2017-12-12
應該是對的啊 !
第一步:將 n-1 個盤子從 a 經過 c 搬運到 b,即move(n-1, a, c, b); 第二步:將 第 n 個盤子 從 a 移到 c,即 print a, '-->', c; 第三步: 將 n-1個盤子從 b 經過 a 搬運到 c,即move(n-1, b, a, c);
2017-12-12
是的,可以這樣想。其實你可以用最小化來觀察它的規(guī)律,再去思考如何寫遞歸,例如像move(n,a,b,c),你可以從n=2,3,4開始觀察規(guī)律,再將不斷重復的動作提取出來,這算是遞歸的一種變相使用吧,哈哈。