請問n不為1時,這里的print為什么還是a->c而不是a->b呢?
請問各位大神,這里為什么還是a->c?前面已經變成move(n-1,a,c,b)了,這里為什么不是a->b呢?為什么move(n-1,b,a,c)之后不用再print了呢?謝謝大家。
move(n-1,a,c,b) print?a,'-->',c move(n-1,b,a,c)
請問各位大神,這里為什么還是a->c?前面已經變成move(n-1,a,c,b)了,這里為什么不是a->b呢?為什么move(n-1,b,a,c)之后不用再print了呢?謝謝大家。
move(n-1,a,c,b) print?a,'-->',c move(n-1,b,a,c)
2017-03-31
舉報
2017-03-31
遞歸調用,原函數定義的是 move(n,a,b,c),調用move(n-1,a,c,b)之后,相當于n=n-1,a='a',b='c',c='b',
2017-04-05
當n≠1時,其實分成兩個過程:1.先把n-1塊原盤從a移到b,也就是move(n-1,a,c,b),把最后一塊原盤從a移到c,也就是print?a,'-->',c;2.再把n-1塊原盤從b移到c,也就是move(n-1,b,a,c),這里總共只有n-1塊,都移完了所以不用print了