zoukankan      html  css  js  c++  java
  • Fibonacci数列(一)

    Fibonacci数列:斐波那契数列也叫兔子数列:

    由来:

    如果一对兔子每月能生一对小兔(一雄一雌),而每对小兔在牠出生後的第三个月裡,又能开始生一对小兔,假定在不发生死亡的情況下,由一对出生的小兔开始,50个月后会有多少对兔子?

    在第一个月时,只有一对小兔子,过了一个月,那对兔子成熟
    了,在第三个月时便生下一对小兔子,这时有兩对兔子。再过
    多一个月,成熟的兔子再生一对小兔子,而另一对小兔子长大
    ,有三对小兔子。如此推算下去,我们便发現一个規律: 

     

    时間(月)
    初生兔子(对)
    成熟兔子(对)
    兔子總數(对)
    1
    1
    0
    1
    2
    0
    1
    1
    3
    1
    1
    2
    4
    1
    2
    3
    5
    2
    3
    5
    6
    3
    5
    8
    7
    5
    8
    13
    8
    8
    13
    21
    9
    13
    21
    34
    10
    21
    34
    55

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    由此可知,从第一个月开始以后每个月的兔子总數是:
    1,1,2,3,5,8,13,21,34,55,89,144,233…

    若把上述數列继续写下去,得到的數列便称为斐波那契數列。
    數列中每個數便是前兩个數之和,而數列的最初兩個數都是1。
    若设 F0=1, F1=1, F2=2, F3=3, F4=5, F5=8, F6=13... 
    则:当n>1時,Fn+2 = Fn+1 + Fn,而 F0=F1=1。

     

    1,1,2,3,5,8,13,21,34,55,89……F(n)=F(n-1)+F(n-2);

    用C#代码实现的话就是:

       public static int FindNumber(int n)
             {
                int result;
                if(n==0||n==1)
                {
                    result=1;
                }
                else
                {
                    result = FindNumber(n - 1) + FindNumber(n - 2);
                }
                return result;
            }

      用Js代码实现:

      function (n){

        if(n<0) return ;

        if(n==0||n==1) return 1;

        return arguments.callee(n-1)+arguments.callee(n-2);//argumetns.callee:函数体内部对象相当于回调执行函数体本身

      }

  • 相关阅读:
    leetcode--95. Unique Binary Search Trees II
    leetcode--96. Unique Binary Search Trees
    leetcode分类总结
    leetcode-115. Distinct Subsequences
    tcpdump安装配置及抓包分析
    dp经典案例
    tree的各种问题
    大数的阶乘算法
    由mmap引发的SIGBUS
    win10系统下如何查看端口被哪个进程占用
  • 原文地址:https://www.cnblogs.com/MR-LIUB/p/3464514.html
Copyright © 2011-2022 走看看