关于一个数列(1011010110110……)

        关于一个数列,最近看到一个有意思的东西,想着记录下来:

初始数列为1,每次把1变为10,0变为1,最后数列是什么样子。

        看到这个数列。一时间没有头绪,想着先手推一下:

1;10;101;10110;10110101;……

到了这里,我们首先很容易一眼看出这个数列的长度问题:1,2,3,5,8……

那么是否,这是一个斐波那契数列呢?

这个我们先不去证明,我们首先看看这个数有什么规律:

每次我们把1变为10,0变为1:那么我们的位数变化只跟当前为1的数字有关。

我们当前为1的数字显然有如下转移方程。

设fi为当前1的个数,gi为当前0的个数;

显然我们会有:

f[i] = f[i-1] + g[i -1]

g[i] = f[i -1]

那么,我们就很容易上看出这个规律了:

第i位的长度,显然是f[i] + g[i],而i-1位的长度,显然也是 f[i-1] + g[i-1],那么我们每次差的就是一个f[i-1]而已,那么显然 f[i -1] = f[i-2] + g[i -2] 那么我们就很明显的可以看出:这是第i-2个数列的长度,那么我们这个就相当于i-1个序列的长度加上一个 i-2个序列的长度。

显然,是一个斐波那契数列,证毕。

那么,我们知道了长度的规律,就不得不想继续深入研究,看看到第数字上有什么规律了:

看着看着,又看出了规律:

我们不妨设s[i]为这个数列的排列顺序:

那么在 i > 2时,有:

s[i] = s[i - 1] + s[i -2]

这个加号是string的那种。

那么,如何严谨地证明呢?

这个也比较容易:

我们考虑:有1,10,101,10110,

我们发现如果对齐第一位,那么他们是子序列关系,就是说,后面的包含前面的。这个很容易证明,不多说了。

那么,我们继续考虑,如果 s[i]有t位,s[i + 1]有p位,那么,显然,s[i + 2]有t + p位。而且,s[i]是s[i +1]的一个前缀,s[i +1]是s[i +2]的一个前缀,那么s[i] 也是s[i + 2]的一个前缀。

那么我们s[i +2]的前p个数,就是s[i +1]前t个数转移来的。那么,显然,s[i + 1]的后(p -t )个数,就是转移为s[i + 2]后t个数的数了。

那么,我们就可以试着递归一下,发现,我们最终回到1的时候,1,10.101满足s[i] = s[i -1] + s[i -2]

由此,后面都满足这个规律,证毕。

那么这个数列证明完毕,那么希望有用。

如果哪里有问题,欢迎指正。

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值