zoukankan      html  css  js  c++  java
  • 斐波那契数列

    斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*),用文字来说,就是斐波那契数列列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。特别指出:0不是第一项,而是第零项。

    #include
    int fun(int n)      //n代表第几项。特别指出:0是第0项,不是第1项。
    {
        if (n <= 1)
            return n;
        else
            return fun(n-1) + fun(n-2);
    }

     改进1:求Fibonacc数列第n项时虽然要用到前面两项的值,但它们仅作为临时计算的中间值,不作为结果输出,因此无保留的必要,完全可以转化为迭代法求解:

     1 unsigned int Fibonacci(int n){
     2     int n;
     3     unsigned long a = 0, b = 1, c;
     4     if(n == 1){
     5         return 0;
     6     }else{
     7         for(int i = 0; i < n; i ++){
     8             c = a + b;
     9             a = b;
    10             b = c;
    11         }
    12      return c;
    13     }
    14 }

    改进2:同上

     1 long long Fibonacci(unsigned n){
     2     int result[2] = {0, 1};
     3     if(n < 2){ 
     4         return result[n];
     5     }
     6     long long fibNMinusOne = 1;
     7     long long fibNMinusTwo = 0;
     8     long long fibN = 0;
     9     for(unsigned int i = 2; i <= n; i ++){
    10         finN = fibNMinusOne + finNMinusTwo;
    11         
    12        fibNMinusTwo = fibNMinusOne;
    13        fibNMinusOne = fibN;
    14     }
    15     return fibN;
    16 }
  • 相关阅读:
    Linux 忘记root密码
    Linux 基础命令
    Linux 运行级别
    Oracle 体系结构
    Oracle 数据库启动过程
    数据库设计范式
    Oracle通过ROWID删除表中重复记录
    JACASCRIPT--的奇技技巧的44招
    css 的小细节,小总结
    关于我们DOM的知识点
  • 原文地址:https://www.cnblogs.com/QoQian/p/5831183.html
Copyright © 2011-2022 走看看