汉诺塔通项公式推导

汉诺塔通项公式证明:

  设三个塔分别为A、B、C。并设当A塔初始有n个盘子的时候,转移到C塔需要用T(n)步。

  首先,有如下规律:

  T(0) = 0 (当没有盘子的时候当然为0)

  T(1) = 1 

  T(2) = 3

  T(3) = 7

  .....

  T(n) = T(n - 1) + 1 + T(n - 1) = 2* T(n - 1) + 1

  为什么T(n) = 2 * T(n -1 )+ 1 呢?

  很容易可以想到,当n = n - 1 的时候,

  (1)从A塔将所有盘子移动到C塔需要的步数是 T(n - 1)。

    (2)如果从A到C移动的步数是T(n - 1),那么从A移动到B也需要T(n - 1)

  那么当n = n 时:

  (1)首先将A塔的全部盘子移动到B塔,需要T(n  -1 )步。

  (2)将A塔的最后一个盘子移动到C塔,需要1步

  (3)将B塔的全部盘子移动到C塔,需要T( n  - 1 )步。

  最终结果需要 2* T(n  - 1)+ 1 步。

  所以T(n) = 2 * T( n  - 1 ) + 1 

  那么通项公式是什么呢?该怎么证明呢?

  很简单~

  令等式左右两端同时加1,有:

  T(n) + 1 = 2 * (T(n - 1) + 1)

  设T(n) + 1 = S(n)

  那么:S(n) = 2 *S(n - 1)

  并且当n = 1 的时候,S(1) = 1;

  那么S(n) = 2 ^ n

  所以:  T(n) + 1 = S(n) = 2 ^ n

  即     T(n) = 2 ^ n - 1

证毕。

  

转载于:https://www.cnblogs.com/dqsBK/p/5359853.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值