分类: C/C++
2015-08-06 16:42:11
设对于n位数, 满足条件的数目 最右一位是1的情况的集合为L(n), 最右一位是0的情况的集合是M(n)
当x=n+1 那么a.对于任意一个L(n)中的情况, 后面补0
b.对于任意一个M(n)中的情况, 后面补0
c.对于任意一个M(n)中的情况, 后面补1
得到最后一位是0的情况(a & b) : M(n+1) = L(n)+ M(n)
最后一位是1的情况(c) : L(n+1) = M(n)
所以
f(n+1) = L(n)+ M(n) + M(n) = f(n) + L(n-1)+M(n-1) = f(n) + f(n-1)