汉诺塔的移动次数

854 阅读1分钟

设f(n)表示n层汉诺塔要全部移走需要移动多少次盘子,有:
f(n) = 2f(n-1)+1(至于为什么是这个公式,参考汉诺塔的理解相关的两个收藏页面)

由f(n)=2f(n-1)+1
得f(n)+1=2f(n-1)+2=2(f(n-1)+1),即:
f(n)+1=2(f(n-1)+1),同理
f(n-1)+1=2(f(n-2)+1)
f(n-2)+1=2(f(n-3)+1)
....
f(3)+1=2(f(2)+1)
f(2)+1=2(f(1)+1)

将上面所有式子左右两边分别相乘得:
f(n) + 1 = 2^(n-1) * (f(1) + 1) = 2^(n-1) * (f(1)+1) = 2^(n-1) * 2= 2^(n) (汉诺塔的f(1)为1)
f(n) = 2^(n) - 1