利用递推思想解决汉诺塔问题
汉诺塔问题是一个比较经典的利用递推思想来解决的问题。
这是一张来自百度百科的一张图片。
我们需要利用B杆将A杆上的所有东西放到C杆上面。而且放置事物的时候只能是大的在下面,小的在上面。每一次移动只能移动一个物块。
我们假设有N个物块在A杆子上面。为了保证把全部的N个物块放到C杆子上去,我们就必须先让第N块放到C杆子的最下面。这样才能保证所有物块保证,下面的永远比上面的大。
那我们在移动第N块的时候,(N — 1)个物块必须先暂时放到B杆子处。
我们依次往上类推,(N — 1)这个物块为了放到C杆子上时,(N — 2)个物块就必须放到B杆上。以此往复,第二个物块为了放到C杆子上,第一个物块就必须先放到B杆子上。
第二个物块放好之后,第三个物块也想去C杆子上,第二个物块只能利用A杆让自己从C杆子放到B杆子。
至于怎么放,我们只需要把第B上的第一物块放到A上,第2物块就能放到B杆子上面了。第一物块放到B杆子上面。(这个步骤我们不必体现在代码上,我们只需要知道,我们借用A杆,将C杆子上的东西放到B杆子上。)
那我们持续好上面的步骤之后,我们发现,前(N — 1)个物块全部都在B杆子上面了。那我们就要把A杆子上的第N个物块放到C杆子上。之后,我们遇到的问题就是,怎么把B杆子上的(N — 1)个物块放到C杆子上去。
那我们可以想象&#x