欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++求Fib數(shù)列

 更新時間:2016年02月27日 16:48:23   投稿:hebedich  
本文給大家匯總介紹了幾種C++求Fib數(shù)列的方法,有需要的小伙伴們可以來參考下

1. 第一版本程序

int fib(int pos)
  {
    int elem = 1;
    int n1 = 1, n2 = 1;
    for (int i = 3; i <= pos; i++)
    {
      elem = n2 + n1;
      n1 = n2;
      n2 = elem;
    }
    return elem;
  }

2. 第二版本

bool fib(int pos, int &elem)
  {
    if(pos < 0 || pos > 1024)
    {
      elem = 0;
      return false;
    }
    elem = 1; //注意:定義只能有1次
    int n1 = 1, n2 = 1;
    for (int i = 3; i <= pos; i++)
    {
      elem = n2 + n1;
      n1 = n2;
      n2 = elem;
    }
    return true;
  }

主函數(shù)調(diào)用

int main()
  {  
      int pos;
    cout <<"Please enter a position: ";
    cin >> pos;
  
    int elem;
    if(fib(pos, elem))
    {
      cout << "element # " << pos
         << " is " << elem << endl;
    }
    else
      cout << "Sorry. Couldn't calculate element #"
         << pos <<endl;
  }

3. 第三版本 改進(jìn)后的fib

const vector<int>* fib_new(int size)
  {
    const int max_size = 1024;
    static vector<int> elems;
  
    if(size <= 0 || size >= max_size)
    {
      cerr << "fib_new(): oops:invalid size:"
         << size << "-- can't fulfill request.\n";
      return 0;
    }
    for(int ix = elems.size(); ix < size; ix++)
    {
      if (ix == 0 || ix == 1)
        elems.push_back(1);
      else
        elems.push_back(elems[ix - 1] + elems[ix - 2]);
    }
    return &elems;
  }

主函數(shù)調(diào)用

    const vector<int> *result=fib_new(5);
    cout << result->back();
    
    const vector<int> *result=fib_new(5);
    cout << result->at(4)<< endl;
    //這個應(yīng)該怎么多次調(diào)用返回,這個還沒明白,留個記號。

最后這個版本可以避免進(jìn)行重復(fù)運(yùn)算,使用了局部靜態(tài)對象。

相關(guān)文章

  • c++ 數(shù)據(jù)結(jié)構(gòu)map的使用詳解

    c++ 數(shù)據(jù)結(jié)構(gòu)map的使用詳解

    這篇文章主要介紹了c++ 數(shù)據(jù)結(jié)構(gòu)map的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下
    2021-04-04
  • 對比分析C語言中的gcvt()和ecvt()以及fcvt()函數(shù)

    對比分析C語言中的gcvt()和ecvt()以及fcvt()函數(shù)

    這篇文章主要介紹了對比分析C語言中的gcvt和ecvt以及fcvt函數(shù),都是將數(shù)字轉(zhuǎn)化為字符串,注意其之間的功能區(qū)別,需要的朋友可以參考下
    2015-08-08
  • C++中引用處理的基本方法

    C++中引用處理的基本方法

    引用不是新定義了一個變量,而是給已經(jīng)存在的變量取了一個別名,編譯器不會為引用變量開辟內(nèi)存空間,他和他引用的變量共用一塊內(nèi)存空間,下面這篇文章主要給大家介紹了關(guān)于C++中引用處理的基本方法,需要的朋友可以參考下
    2022-12-12
  • 基于C語言掃雷游戲的設(shè)計與實現(xiàn)

    基于C語言掃雷游戲的設(shè)計與實現(xiàn)

    大家好,本篇文章主要講的是基于C語言掃雷游戲的設(shè)計與實現(xiàn),感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • c語言中static和extern的用法詳細(xì)解析

    c語言中static和extern的用法詳細(xì)解析

    以下是對c語言中static和extern的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-09-09
  • C語言16進(jìn)制與ASCII字符相互轉(zhuǎn)換

    C語言16進(jìn)制與ASCII字符相互轉(zhuǎn)換

    大家好,本篇文章主要講的是C語言16進(jìn)制與ASCII字符相互轉(zhuǎn)換,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • C++交換指針實例

    C++交換指針實例

    這篇文章主要介紹了C++交換指針實例,針對C與C++交換指針的方法進(jìn)行了較為詳細(xì)的對比分析,非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • 詳解c++11以正確的姿勢輸出enum class的值

    詳解c++11以正確的姿勢輸出enum class的值

    這篇文章主要介紹了詳解c++11以正確的姿勢輸出enum class的值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • C++靜態(tài)成員函數(shù)和this指針詳解

    C++靜態(tài)成員函數(shù)和this指針詳解

    這篇文章主要為大家介紹了C++靜態(tài)成員函數(shù)和this指針,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • c++如何實現(xiàn)歸并兩個有序鏈表

    c++如何實現(xiàn)歸并兩個有序鏈表

    這篇文章主要介紹了c++如何實現(xiàn)歸并兩個有序鏈表,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論