打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
不死神兔的奥秘(二)

上次,我们给大家讲到了兔子数列,累计平方和的特点,即平方和也是由兔子数列构成的,我们从之前的等式中貌似很难得到结论。为啥有这样神奇的结论呢?

我们转换一下思路,平方有何几何意义,显然平方指的是一个正方形的面积,那好,我们依照这个思路,作一个几何图形试试。

这下明白了吧,比如第一个等式1^2+1^2=1*2。左边表示两个正方形的面积,右边表示一个长方形的面积,很显然它们表示的是同一区块的面积。再比最后一个等式,左边表示上图中六个正方形的面积之和,右边表示图中的大长方形的面积。现在似乎明白了等式为什么成立了,但是等式右边的这些数字为什么是斐波那契数呢?

这就是因为,斐波那契数为前两项之和,我们就可以构造上面的几何图形,而且这样构造的图形中的长方形的边长只能为斐波那契数。

另一个性质

式中左边为相邻两个斐波那契数的平方和,我们发现计算的结果全为斐波那契数,也就是说对于这样的等式我们只用它自身的数字就足够了。但是,该式我们并没有写出更多的项,大家可以思考思考,如果继续往下写还能否成立呢?

c++的兔子数列

作为经典的问题,c++同样也有求解兔子数列的方案,那我们来介绍两种最基础的方式,分别是递归求解兔子数列以及递推求解的方案。

递归

斐波那契数列是编程书中讲递归必提的,因为它是按照递归定义的。

#include

using namespace std;


int Fib(int n)

{

    return n < 2="" 1="" :="" (fib(n-1)="" +="">

}


int main()

{

    for(int i=0;i<>

        cout<><><><>

    return 0;

}


这是编程最方便的解法,当然,也是效率最低的解法,原因是会出现大量的重复计算。为了避免这种情况,可以采用递推的方式。

递推

#include

using namespace std;


int main()

{

    int Fib[1000];

    Fib[0]=0;Fib[1]=1;

    for(int i=2;i<>

    {

        Fib[i]=Fib[i-1]+Fib[i-2];

        cout<><><><>

    }

return 0;

}

递推的方法可以在较短的时间内计算出这个值了!

最后,再给大家介绍一个神奇的性质:    

    每3个数有且只有一个被2整除,

    每4个数有且只有一个被3整除,

    每5个数有且只有一个被5整除,

    每6个数有且只有一个被8整除,

    每7个数有且只有一个被13整除,

    每8个数有且只有一个被21整除,

    每9个数有且只有一个被34整除,

    ……

    每n个数有且只有一个被Fib[n]整除!

这次的文章,给大家讲了兔子数列的一些性质的证明,以及如何在c++中求解我们的兔子数列,下次。我们将会介绍兔子数列在大自然界中的应用!


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
迭代算法与递归算法的概念及区别(2)
斐波那契数列的递归函数
常见算法
递归算法及经典递归例子代码实现
斐波那契数列
Java数据结构算法左神算法刷题:动态规划,斐波那契数列和暴力递归
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服