看到这么多人都去网上抄,用N=3、4、5等具体举例什么的,其实有更加直接的解题思路:
move(N,source,through,destination), 即把source上的N个盘经由trhough转移到destination
1.目标就是把最底下那个最大的盘移到C,稍作转换,可以递归为要先把N-1个盘从A经由C移动到B,才能把最后一个盘N从A搬到C,于是有: { move(N-1,A,C,B) A-->C }
2.这里其实已经完成最大盘的移动
3.接下来就是递归了,稍作转换,不就是要把B上的N-1个盘子经由A移动到C?那问题来了,这和把N个盘从A经由B移动到C有什么本质区别?答案当然是完全一致,这也就是递归的真正入口,即: { move(N-1,B,A,C) }
Sign in to make a reply
假阳光真宅男
看到这么多人都去网上抄,用N=3、4、5等具体举例什么的,其实有更加直接的解题思路:
move(N,source,through,destination), 即把source上的N个盘经由trhough转移到destination
1.目标就是把最底下那个最大的盘移到C,稍作转换,可以递归为要先把N-1个盘从A经由C移动到B,才能把最后一个盘N从A搬到C,于是有: { move(N-1,A,C,B) A-->C }
2.这里其实已经完成最大盘的移动
3.接下来就是递归了,稍作转换,不就是要把B上的N-1个盘子经由A移动到C?那问题来了,这和把N个盘从A经由B移动到C有什么本质区别?答案当然是完全一致,这也就是递归的真正入口,即: { move(N-1,B,A,C) }