最近翻了两页《具体数学》, 序言说的确实很有道理
只有掌握了足够多的具体技巧, 才能堆得起全局的抽象理解
这里做点笔记
第一章最后推广到了这么一个递推式:
对这个递推式, 要求
. 书中的分析方法是先把
的系数函数设出来, 再代入几个具体的取值, 从特殊到一般, 逐渐把握全貌, 求出系数函数:
设
注意这里的
是与
的具体取值无关的函数, 且显然有
每组
都能唯一决定一个
这反过来说明: 如果我们能通过取具体的
得出一组
具体的
值, 那么这组
也能反过来决定这个
, 下面求解
的过程正是用了这个思路.
- 取
稍微归纳一下, 可以证明此时
这里的
满足
, 下同
即
能得到:
这里
2. 把
代回递归式, 可得到:
即
能得到:
3. 在递归式中代入
得到
可解得
, 此时
综上
我们得到了方程组:
其中:
于是可以解得:
于是, 我们得到了
的通解:
回过头来看二进制向左循环移位的函数...
取
, 则根据上式有:
用位运算写的话看起来更清晰:
x = x << 1 + 1;
举例:
其中
,
2.
3.
把通解扩展到二进制的形式...
先约定一种扩展的二进制记号:
再约定一个指示函数:
则由一开始的递归式, 分奇偶讨论可知:
那么, 如果记
, 这里
, 且
注意
则
可以写为:
如
,
代入
看一看, 则:
观察一下发现, 对于形如
这种, 一个
后跟了几个连续的
的二进制数,
对他变换后, 会把最左边的
变到紧跟的连续的最右边的
处, 即
所以看起来形成了循环左移的效果.