两个print怎么实现了打印所有步骤?
我知道这代码的意思,先将n-1个移动到中转柱上,再将第n个移动到目的柱上。
n-1个饼一直重复执行move直到为1才能return。return后回到刚刚停下的地方继续执行下去。就这样通过2个print得到了15个步骤。
可是怎么想也想不通为什么这两个print就能打印出全部的步骤。
我484蠢- -
我知道这代码的意思,先将n-1个移动到中转柱上,再将第n个移动到目的柱上。
n-1个饼一直重复执行move直到为1才能return。return后回到刚刚停下的地方继续执行下去。就这样通过2个print得到了15个步骤。
可是怎么想也想不通为什么这两个print就能打印出全部的步骤。
我484蠢- -
2015-11-01
最笨也是最简单的方法:自己写出每一步执行步骤和结果就可以了。
例如move(2, a, b, c)运行的时候:
第一层if不满足,执行else,move(1, a, c, b),进入第二层
第二层if满足,打印a-->b(注意参数不是最开始的abc,而是第一层里面的acb了),返回
第一层继续执行,打印a-->c
第一层继续执行,执行move(1, b, a, c),进入第二层
第二层if满足,打印b-->c(注意参数又变成了第一层的bac),返回
用笨办法做过一遍以后,就发现print没问题,只不过是每次递归调用时参数的位置变了而已。笨办法虽然麻烦,但其实是可以加深对知识理解深度的。这套教程写得不错,但练习设置得都太简单,学员缺少练手的机会,容易眼高手低,要知道光靠“看”是学不会“写”程序的。
举报