汉诺塔通项公式证明:
设三个塔分别为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
证毕。
时间: 2024-11-05 04:13:45