具体数学 - 1 递归问题
递归问题
河内塔
递归式
\[f_n = 2 f_{n - 1} + 1
\]
封闭形式
\[f_n = 2^n - 1
\]
- 证明
\(f_1 = 1\) 成立,考虑 \(f_{n - 1}\) 成立 \(f_n = 2 (2^{n - 1} - 1) + 1 = 2^n - 1\)
平面上的直线
用 \(n\) 个直线最多划分出多少部分
递归式
考虑新加入一条直线,如果和前面的直线有交点,则会新分一个平面,只需要让新加入的直线不和任何一条已有直线平行即可
\[f_n = f_{n - 1} + n
\]
封闭形式
考虑从 \(f_0\) 一直加到 \(f_n\)
\[f_n = f_0 + 1 + 2 + ... + n = 1 + \frac {(1 + n) n} 2
\]
考虑用数学归纳法证明
\[f_n = f_{n - 1} + n = 1 + n + \frac{n ^ 2 - n} 2 = 1 + \frac{n ^ 2 + n} 2
\]
约瑟夫问题
一个 \(1\) 到 \(n\) 环,每隔一个数删去一个(删除从第二个数开始删),最后剩下哪个数?
递归式
首先考虑 \(2n\) 是偶数,发现删除一圈后,所有偶数都被删除了 \((2,4,6,...,2n)\)
剩下的每个数可以看做一个 \(n\) 的环,每个数乘 2 减 1
那么我们知道了
\[f_{2n} = 2f_n - 1
\]
再考虑 \(2n + 1\) 是奇数,相当于转了一圈后,把 1 也删除了
剩下的每个数可以看做一个 \(n\) 的环,每个数乘 2 加 1
\[f_{2n + 1} = 2f_n + 1
\]
封闭形式
找到 \(n\) 的最高次幂 \(2^m\)
可以发现所有最高次幂是 \(2^m\) 的结果都是从最高次幂为 \(2^{m - 1}\) 的情况下得到的
经过寻找规律可得
\[f_n = 2 (n - 2^{m}) + 1
\]
这个式子用数学归纳法可以证明
推论
如果一个函数长的和约瑟夫问题很像,或者说有另外的递推式,我们应该怎样寻找它的封闭形式呢?
对于一个函数,我们可以加入独立参数来描绘它,比如,\(f_1 = a, f_{2n} = 2f_n + b_0, f_{2n + 1} = 2f_n + b1\)
对于一些特殊情景(如 \(f_2 = 2f_1 + b_0\))我们可以直接解出它的特殊参数
总结
通过上面的例子可以发现,在求解一个封闭形式时,一般要先讨论边界和小数情况,进行合理推理和猜想,最后证明式子
对于一般的递归式,可以设置独立参数来辅助求解