亚洲综合AⅤ一区二区三区不卡,欧美成在线观看国产,老司机精品视频在线观看播放,精品久久国产免费

<dl id="2gmk4"><small id="2gmk4"></small></dl>
  • 首頁 - 網(wǎng)校 - 萬題庫 - 直播 - 雄鷹網(wǎng)校 - 團購 - 書城 - ? - 學習通 - 導航 -
    首頁網(wǎng)校萬題庫直播雄鷹網(wǎng)校團購書城?論壇實用文檔作文大全寶寶起名
    2015中考
    法律碩士
    2015高考
    MBA考試
    2015考研
    MPA考試
    在職研
    中科院
    考研培訓
    專升本
    自學考試 成人高考
    四 六 級
    GRE考試
    攻碩英語
    零起點日語
    職稱英語
    口譯筆譯
    申碩英語
    零起點韓語
    商務英語
    日語等級
    GMAT考試
    公共英語
    職稱日語
    新概念英語
    專四專八
    博思考試
    零起點英語
    托?荚
    托業(yè)考試
    零起點法語
    雅思考試
    成人英語三級
    零起點德語
    等級考試
    華為認證
    水平考試
    Java認證
    職稱計算機 微軟認證 思科認證 Oracle認證 Linux認證
    公 務 員
    導游考試
    物 流 師
    出版資格
    單 證 員
    報 關 員
    外 銷 員
    價格鑒證
    網(wǎng)絡編輯
    駕 駛 員
    報檢員
    法律顧問
    管理咨詢
    企業(yè)培訓
    社會工作者
    銀行從業(yè)
    教師資格
    營養(yǎng)師
    保險從業(yè)
    普 通 話
    證券從業(yè)
    跟 單 員
    秘書資格
    電子商務
    期貨考試
    國際商務
    心理咨詢
    營 銷 師
    司法考試
    國際貨運代理人
    人力資源管理師
    廣告師職業(yè)水平
    衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護士
    會計從業(yè)資格
    基金從業(yè)資格
    統(tǒng)計從業(yè)資格
    經濟師
    精算師
    統(tǒng)計師
    會計職稱
    法律顧問
    ACCA考試
    初級會計職稱
    資產評估師
    高級經濟師
    注冊會計師
    高級會計師
    美國注冊會計師
    審計師考試
    國際內審師
    注冊稅務師
    理財規(guī)劃師
    一級建造師
    安全工程師
    設備監(jiān)理師
    公路監(jiān)理師
    公路造價師
    二級建造師
    招標師考試
    物業(yè)管理師
    電氣工程師
    建筑師考試
    造價工程師
    注冊測繪師
    質量工程師
    巖土工程師
    注冊給排水
    造價員考試
    注冊計量師
    環(huán)保工程師
    化工工程師
    暖通工程師
    咨詢工程師
    結構工程師
    城市規(guī)劃師
    材料員考試
    消防工程師
    監(jiān)理工程師
    房地產估價
    土地估價師
    安全評價師
    房地產經紀人
    投資項目管理師
    環(huán)境影響評價師
    土地登記代理人
    寶寶起名
    繽紛校園
    實用文檔
    入黨申請
    英語學習
    思想?yún)R報
    作文大全
    工作總結
    求職招聘 論文下載 直播課堂
    您現(xiàn)在的位置: 考試吧 > 軟件水平考試 > 復習資料 > 程序員 > 正文

    2015年軟件水平考試程序員精選題(6)

    來源:考試吧 2015-01-15 11:35:26 考試吧:中國教育培訓第一門戶 模擬考場
    考試吧整理“2015年軟件水平考試程序員精選題(6)”供考生參考,更多軟件水平考試資訊和備考資料請關注考試吧軟件水平考試網(wǎng)。

      O(logn)求Fibonacci數(shù)列

      題目:定義Fibonacci數(shù)列如下:

      / 0 n=0

      f(n)= 1 n=1

      \ f(n-1)+f(n-2) n=2

      輸入n,用最快的方法求該數(shù)列的第n項。

      分析:在很多C語言教科書中講到遞歸函數(shù)的時候,都會用Fibonacci作為例子。因此很多程序員對這道題的遞歸解法非常熟悉,看到題目就能寫出如下的遞歸求解的代碼。

      ///////////////////////////////////////////////////////////////////////

      // Calculate the nth item of Fibonacci Series recursively

      ///////////////////////////////////////////////////////////////////////

      long long Fibonacci_Solution1(unsigned int n)

      {

      int result[2] = {0, 1};

      if(n < 2)

      return result[n];

      return Fibonacci_Solution1(n - 1) + Fibonacci_Solution1(n - 2);

      }

      但是,教科書上反復用這個題目來講解遞歸函數(shù),并不能說明遞歸解法最適合這道題目。我們以求解f(10)作為例子來分析遞歸求解的過程。要求得f(10),需要求得f(9)和f(8)。同樣,要求得f(9),要先求得f(8)和f(7)……我們用樹形結構來表示這種依賴關系

      f(10)

      / \

      f(9) f(8)

      / \ / \

      f(8) f(7) f(6) f(5)

      / \ / \

      f(7) f(6) f(6) f(5)

      我們不難發(fā)現(xiàn)在這棵樹中有很多結點會重復的,而且重復的結點數(shù)會隨著n的增大而急劇增加。這意味這計算量會隨著n的增大而急劇增大。事實上,用遞歸方法計算的時間復雜度是以n的指數(shù)的方式遞增的。大家可以求Fibonacci的第100項試試,感受一下這樣遞歸會慢到什么程度。在我的機器上,連續(xù)運行了一個多小時也沒有出來結果。

      其實改進的方法并不復雜。上述方法之所以慢是因為重復的計算太多,只要避免重復計算就行了。比如我們可以把已經得到的數(shù)列中間項保存起來,如果下次需要計算的時候我們先查找一下,如果前面已經計算過了就不用再次計算了。

      更簡單的辦法是從下往上計算,首先根據(jù)f(0)和f(1)算出f(2),在根據(jù)f(1)和f(2)算出f(3)……依此類推就可以算出第n項了。很容易理解,這種思路的時間復雜度是O(n)。

      ///////////////////////////////////////////////////////////////////////

      // Calculate the nth item of Fibonacci Series iteratively

      ///////////////////////////////////////////////////////////////////////

      long long Fibonacci_Solution2(unsigned n)

      {

      int result[2] = {0, 1};

      if(n < 2)

      return result[n];

      long long fibNMinusOne = 1;

      long long fibNMinusTwo = 0;

      long long fibN = 0;

      for(unsigned int i = 2; i <= n; ++ i)

      {

      fibN = fibNMinusOne + fibNMinusTwo;

      fibNMinusTwo = fibNMinusOne;

      fibNMinusOne = fibN;

      }

      return fibN;

      }

      這還不是最快的方法。下面介紹一種時間復雜度是O(logn)的方法。在介紹這種方法之前,先介紹一個數(shù)學公式:

      {f(n), f(n-1), f(n-1), f(n-2)} ={1, 1, 1,0}n-1

      (注:{f(n+1), f(n), f(n), f(n-1)}表示一個矩陣。在矩陣中第一行第一列是f(n+1),第一行第二列是f(n),第二行第一列是f(n),第二行第二列是f(n-1)。)

      有了這個公式,要求得f(n),我們只需要求得矩陣{1, 1, 1,0}的n-1次方,因為矩陣{1, 1, 1,0}的n-1次方的結果的第一行第一列就是f(n)。這個數(shù)學公式用數(shù)學歸納法不難證明。感興趣的朋友不妨自己證明一下。

    上一頁  1 2 3 4 下一頁

      相關推薦:

      2015年軟考信息技術處理員考前知識點總結匯總

      2015年軟件水平考試《程序員》提高練習題匯總

      2015軟件水平考試《程序員》知識點總結匯總

    文章搜索
    軟件水平考試欄目導航
    版權聲明:如果軟件水平考試網(wǎng)所轉載內容不慎侵犯了您的權益,請與我們聯(lián)系800@lyawyb.com,我們將會及時處理。如轉載本軟件水平考試網(wǎng)內容,請注明出處。
    Copyright © 2004- 考試吧軟件水平考試網(wǎng) All Rights Reserved 
    中國科學院研究生院權威支持(北京)
    在線模擬試題
    考證通關殺器
    考試最新資訊
    一次通關技巧