漢諾塔 (http://baike.baidu.com/view/191666.htm) 的移動也可以看做是遞歸函數。
對柱子編號為a, b, c,將所有圓盤從a移到c可以描述為:
如果a只有一個圓盤,可以直接移動到c;
如果a有n個圓盤,可以看成a有1個底盤 + (n-1)個圓盤,首先需要把 (n-1) 個圓盤移動到 b,然后,將 a的最后一個圓盤移動到c,再將b的(n-1)個圓盤移動到c。
第一步:將 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)
新聞熱點
疑難解答