汉诺塔(Hanoi)问题思路解析

汉诺塔是一个学习了解递归的经典应用问题,如图:


汉诺塔.jpg
  • 题目要求:
    需要把A上n个圆盘移动到C上,一次只能移动一个圆盘,且大圆盘不能在小圆盘上方。给出移动步骤和所需移动次数。

  • 思路分析:
    当n = 1时,
    移动步骤为:A-->C;
    移动次数为:1(2-1)
    当n = 2时,
    移动步骤为:A-->B, A-->C, B-->C;
    移动次数为:3 (2²-1)
    当n = 3时,
    移动步骤为:A-->C, A-->B, C-->B, A-->C, B-->A, B-->C, A-->C;
    移动次数为:7 (2³-1)
    当n = 4时...
    理解后可知:就是先把n-1个圆盘全部移动到B上,再把第n个圆盘移动到C上(此时最大的圆盘已经在C上放好,完成了一步。接下来就是重复上述过程,每次都把剩余的最大圆盘放到C上),最后把n-1个圆盘从B移到C上。
    移动次数分析:从上述分析过程可推出移动次数和圆盘数n有关,为:2n-1

你可能感兴趣的:(汉诺塔(Hanoi)问题思路解析)