今天我也看到递归了。
我的思路如下,递归源于归纳,当n等于1时,推出结果。当n等于t-1时推出结果,并能由此推出,当n等于t时也推出结果,即M(t)能表达出M(t-1)的关系。
第一步确定汉诺塔的结果是什么。
汉诺塔的结果就是当有几个圆盘在原柱子时,结果就是就把这些柱子移到目标柱子。展开就是当n等于1时,结果就是把一个圆盘从原柱子移到目标柱子,当n等于t-1时,结果就是把t-1个圆盘从原柱子移到目标柱子,当n等于t时,结果就是把t个圆盘从原柱子移到目标柱子。
要递归的第二个条件就是确定M(t)和M(t-1)这里的M()方法都一样,即从原柱子有t-1个盘子和有t个盘子时移动到目标柱子,完成结果的方式和步骤一样,即那三步要一样,或者说链条要一样。所以要写出t-1个盘子时移动到结果的三个步骤和t个盘子移动移动到结果的三个步骤,进行对比,步骤和方式是否一样。如果一样,再进行下一步。
在这基础上,是发现M(t)和M(t-1)的关系,M(t)和M(t-1)的关系可以表示为M(t,s,t)=M(t-1,s,m)+(t,s->t)+M(t-1,m,t)
综上,确定汉诺塔是一个递归问题。
根据上面分析,确定了基例,确定了链条,往模板上套吧。