巧妙的斐波那契

本文通过一个具体的算法问题引入斐波那契数列,并解析了其背后的数学规律。通过对不同长度数组中0和1排列组合的研究,揭示了斐波那契数列与特定算法问题之间的联系。

                巧妙斐波那契

   在算法中发现了数学的乐趣。

     先提出一个问题,如果一个长的为n的数组,用0和1填充,不能有连续的1,那么有多少种填充方法。

     解法:长度为n,只有当1的个数小于等于n/2+n%2时,此时才可能满足题意。(例如n=7,那么之多可以有4个1,因为3个0的周围只有4个 空。)则有解为C44 +c5 3 +c6 2 + C71+c80 = 1 + 10 + 15 + 7 + 1 = 34;故长度为7时有34中排法。

    这个解法不是这篇文章的重点,重点是有1,2,3,4,5,6,7的分别是2,3,5,8,13,21,34。这是已经发现规律了,这恰好是斐波那契数(只是斐波那契数开始为1,1,2)。

以5,6,7为例解析:

[5]  :  C3 3+ C4 2 + C5 1 + C6 0  .

[6]  :            C4 3+ C5 2  + C6 1 + C7 0 .

[7] : C4 4 + C5 3 +C6 2 + C7 1 + C8 0.

 

在排列组合中有:Cn m = Cn-1 m + Cn-1 (m-1);

故【5】【6】相同颜色的部分相加等于【7】的该颜色部分(如上图).

 另一种理解:

 对于n>2来说,若F【n-1],F[n-2]都知道,那么这么分析,假设最后一位是0,那么种类数为F【n- 1】; 若最后一位是1,那么倒数第二位一定是0,种类数为F【n-2】。故F【n】 = F【n-1】+F【n-2】;而F【1】=2;F【2】=3;

 

暂时还没有完全理解其中道理,贴出来算是分享,也算是等待知道原因的给讲解下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值