青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

雁過(guò)無(wú)痕

《編程之美》讀書筆記08:2.9 Fibonacci序列

計(jì)算Fibonacci序列最直接的方法就是利用遞推公式 F(n+2)=F(n+1)+F(n)。而用通項(xiàng)公式來(lái)求解是錯(cuò)誤的,用浮點(diǎn)數(shù)表示無(wú)理數(shù)本來(lái)就有誤差,經(jīng)過(guò)n次方后,當(dāng)n相當(dāng)大時(shí),誤差能足夠大到影響浮點(diǎn)數(shù)轉(zhuǎn)為整數(shù)時(shí)的精度,得到的結(jié)果根本不準(zhǔn)。

用矩陣來(lái)計(jì)算,雖然時(shí)間復(fù)雜度降到O(log n),但要用到矩陣類,相當(dāng)麻煩。觀察:

F(n+2)=F(n)+F(n-1)2*F(n-1)+F(n-2)=3*F(n-2)+2*F(n-4)

用歸納法很容易證明 F(n) = F(k)*F(n+1-k) + F(k-1)*F(n-k),利用該遞推公式和原遞推公式,要計(jì)算F(n),只要計(jì)算F([n/2])F([n/2]+1),時(shí)間復(fù)雜度為 O(lg n)如:要計(jì)算F(58),由 58 -> 29,30 -> 14,15 -> 7,8 -> 3,4 -> 1,2 可知只要算5次。可以用一個(gè)棧保存要計(jì)算的數(shù),實(shí)際上,將n的最高位1(假設(shè)在第k位)左邊的0去除掉后,第m次要計(jì)算的數(shù)是第k位到第k-m+1位這m個(gè)位組成的值t(m),則第m-1次要計(jì)算的數(shù)為t(m-1),且

t(m)=2*t(m-1)+(k-m+1位是否為1)

若第m-1次計(jì)算得到了f(k)f(k+1),則第m次計(jì)算:

 

k-m+1

已計(jì)算

待計(jì)算

1

f(k)

f(k+1)

f(2*k+1),f(2*k+2)

0

f(2*k),f(2*k+1)

 

具體公式見下面代碼。

下面是計(jì)算F(n)最后四位數(shù)(某道ACM題)的代碼。


 

/*   Fibonacci數(shù)列第N個(gè)數(shù)的最后4位數(shù)
    注意,當(dāng) N>93 時(shí) 第N個(gè)數(shù)的值超過(guò)64位無(wú)符號(hào)整數(shù)可表示的范圍。
F(n+2)=F(n)+F(n-1) F(0)=0 F(1)=1  F(2)=1        ==>
F(n)=F(k)*F(n+1-k) + F(k-1)*F(n-k)              ==>
F(2*n)=F(n+1)*F(n)+F(n)*F(n-1)=(F(n+1)+F(n-1))*F(n)=(F(n+1)*2-F(n))*F(n)
F(2*n+1)=F(n+1)*F(n+1)+F(n)*F(n)
F(2*n+2)=F(n+2)*F(n+1)+F(n+1)*F(n)=(F(n+2)+F(n))*F(n+1)=(F(n+1)+F(n)*2)*F(n+1)
 
*/

unsigned fib_last4( unsigned num)
{
  
if ( num == 0 ) return 0;
  
const unsigned M=10000;
  unsigned ret
=1,next=1,ret_=ret;
  unsigned flag
=1, tt=num;
  
while ( tt >>= 1) flag <<= 1;
  
while ( flag >>= 1 ){
    
if ( num & flag ){
      ret_ 
= ret * ret + next * next;
      next 
= (ret + ret + next) * next;
    } 
else {
      
//多加一個(gè)M,避免 2*next-ret是負(fù)數(shù),造成結(jié)果不對(duì)
      ret_ = (next + next + M - ret) * ret;
      next 
= ret * ret + next * next;
    }
    ret 
= ret_ % M;
    next 
= next % M;
  }
  
return ret;
}


 



posted on 2010-06-23 23:28 flyinghearts 閱讀(4765) 評(píng)論(11)  編輯 收藏 引用 所屬分類: 算法編程之美

評(píng)論

# re: O(log n)求Fibonacci數(shù)列(非矩陣法)[未登錄] 2010-07-16 11:18 Klion
你好,這篇文章下面這段文字“實(shí)際上,將n的最高位1(假設(shè)在第k位)左邊的0去除掉后,第m次要計(jì)算的數(shù)是第k位到第k-m+1位這m個(gè)位組成的值t(m),則第m-1次要計(jì)算的數(shù)為t(m-1),且t(m)=2*t(m-1)+(第k-m+1位是否為1)。若第m-1次計(jì)算得到了f(k)和f(k+1),則第m次計(jì)算:”
不是看的很懂,希望博主給解釋下。
主要有以下幾點(diǎn)疑問(wèn):1.那個(gè)最高位左邊的是比最高位高的位還是低的位。
2.那個(gè)t(m)怎么算的  回復(fù)  更多評(píng)論
  

# re: O(log n)求Fibonacci數(shù)列(非矩陣法) 2010-07-18 05:16 dissertation service
A lot of years good people would like to order good enough history dissertation referring to this good post from the dissertation writing services. Can you in case suggest the experienced thesis writing services? Thanks a lot.   回復(fù)  更多評(píng)論
  

# re: O(log n)求Fibonacci數(shù)列(非矩陣法) 2010-07-21 00:35 flyinghearts
@Klion

以58為例其二進(jìn)制表示(最左邊的0省略)為:
  11 1010
t(1) 1
t(2) 11
t(3) 11 1
t(4) 11 10
t(5) 11 101
t(6) 11 1010

即:
t(1) = 1
t(2) = 3
t(3) = 7
t(4) = 14
t(5) = 29
t(6) = 58

  回復(fù)  更多評(píng)論
  

# re: O(log n)求Fibonacci數(shù)列(非矩陣法)[未登錄] 2010-07-26 11:40 Klion
@flyinghearts
恩,謝謝了。后來(lái)我自己也動(dòng)手劃了下,原來(lái)我一開始沒理解到,現(xiàn)在我知道那個(gè)t(m)怎么算的,也用自己的理解寫了點(diǎn)求出這個(gè)是干嘛的。
我理解的就是這個(gè)t(m)其實(shí)就是一個(gè)逆向工程,先是判斷右移(m-1)位之后的情況,看這個(gè)數(shù)是奇數(shù)還是偶數(shù),如果是奇數(shù)就由哪兩個(gè)數(shù)得來(lái),如果是偶數(shù),就由哪兩個(gè)數(shù)得來(lái),由這個(gè)可以得到我們要算的結(jié)果是算出來(lái)的這兩個(gè)中的小者。  回復(fù)  更多評(píng)論
  

# re: O(log n)求Fibonacci數(shù)列(非矩陣法) 2010-08-02 23:34 flyinghearts
@Klion
58 -> 29 -> 14 -> 7 -> 3 -> 1
t(i)就是這個(gè)倒過(guò)來(lái)。
要計(jì)算 F(t(i)) 就要判斷 t(i) 是 t(i-1)的2倍,還是2倍加1
(實(shí)際上,t(i)沒必要計(jì)算,只要判斷第k-m+1位是否為1就可以了。)
根據(jù)這兩個(gè)情況,決定使用那幾個(gè)公式。


我最初的代碼,就是用一個(gè)棧,保存n每次右移1位的結(jié)果,
最后根據(jù)棧頂是否是奇數(shù),來(lái)決定調(diào)用那兩個(gè)公式,出棧。
反復(fù)至棧為空。



  回復(fù)  更多評(píng)論
  

# re: 《編程之美》讀書筆記08:2.9 Fibonacci序列 —— O(log n)求Fibonacci數(shù)列(非矩陣法)[未登錄] 2010-10-06 05:47 april
謝謝帖主的分享,不過(guò)code算出來(lái)的結(jié)果是錯(cuò)的,貼主有測(cè)試過(guò)嗎?
遞推公式 F(n+2)=F(n)+F(n-1) 是錯(cuò)的
正確的是 F(n+1)=F(n)+F(n-1), 我想這是為什么算出來(lái)的結(jié)果不是F(n), 而是F(n-1).
  回復(fù)  更多評(píng)論
  

# re: 《編程之美》讀書筆記08:2.9 Fibonacci序列 —— O(log n)求Fibonacci數(shù)列(非矩陣法)[未登錄] 2010-10-06 06:01 april
@april
收回我的評(píng)論,雖然遞推公式寫錯(cuò)(typo),但是code返回結(jié)果正確。。  回復(fù)  更多評(píng)論
  

# re: 《編程之美》讀書筆記08:2.9 Fibonacci序列 —— O(log n)求Fibonacci數(shù)列(非矩陣法) 2010-12-02 23:34 flyinghearts
@april
確實(shí)把公式打錯(cuò)了:
F(n+2)=F(n)+F(n-1) 應(yīng)該是 F(n+1) = F(n) + F(n-1)
不過(guò)后面的公式推導(dǎo)沒問(wèn)題。

  回復(fù)  更多評(píng)論
  

# re: 《編程之美》讀書筆記08:2.9 Fibonacci序列 —— O(log n)求Fibonacci數(shù)列(非矩陣法) 2012-09-03 10:26
不過(guò)實(shí)測(cè)的結(jié)果:是matrix版(O(logn))最快,去遞歸的(bottom-up)版(O(n))次之,然后是這個(gè)版本(O(logn)),可能是乘法的緣故  回復(fù)  更多評(píng)論
  

# re: 《編程之美》讀書筆記08:2.9 Fibonacci序列 —— O(log n)求Fibonacci數(shù)列(非矩陣法) 2013-04-26 23:21 card323
我寫了一篇文章 ggboom.com/2013/04/26/ologn%E6%B1%82%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91fibonacci%E6%95%B0%E5%88%97/
歡迎拍磚  回復(fù)  更多評(píng)論
  

# re: 《編程之美》讀書筆記08:2.9 Fibonacci序列 —— O(log n)求Fibonacci數(shù)列(非矩陣法) 2013-04-26 23:23 card323
@黃
試試我的算法:
ggboom.com/2013/04/26/ologn%E6%B1%82%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91fibonacci%E6%95%B0%E5%88%97/  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品久久久久久模特| 亚洲精品久久视频| 日韩视频第一页| 日韩午夜激情电影| 中文一区在线| 亚洲欧美综合一区| 久久久久久夜| 欧美激情中文字幕乱码免费| 亚洲激情电影中文字幕| 一区二区三区日韩精品| 亚洲欧美一区二区三区在线| 久久久.com| 欧美国产第一页| 国产精品高潮视频| 韩曰欧美视频免费观看| 99亚洲伊人久久精品影院红桃| 这里只有精品丝袜| 久久久噜噜噜久噜久久| 亚洲美女福利视频网站| 亚洲欧美国产另类| 快播亚洲色图| 国产精品三上| 亚洲精品影院| 麻豆av一区二区三区| 亚洲精品综合精品自拍| 卡通动漫国产精品| 老司机免费视频一区二区三区| 亚洲黄色av| 久久成人精品无人区| 欧美日韩成人一区二区| 一区二区在线不卡| 亚洲一区二区三区色| 免费一区视频| 香蕉精品999视频一区二区| 欧美激情一区二区三区蜜桃视频| 国产日韩精品视频一区二区三区| 亚洲精品国产拍免费91在线| 欧美在线综合| 一本色道久久综合亚洲精品按摩| 快播亚洲色图| 激情校园亚洲| 久久久人成影片一区二区三区观看| 99re热精品| 欧美精品免费观看二区| 在线免费精品视频| 香蕉成人久久| 亚洲伦理网站| 欧美大片第1页| 在线观看成人av| 久久久噜噜噜久久中文字免| 亚洲欧美日本国产专区一区| 欧美日韩在线一区二区三区| 亚洲精品午夜| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美成人午夜77777| 亚洲丶国产丶欧美一区二区三区| 宅男在线国产精品| 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲欧洲精品一区二区三区| 欧美专区日韩视频| 亚洲免费在线精品一区| 国产精品无码专区在线观看| 亚洲永久免费观看| 亚洲永久网站| 狠狠做深爱婷婷久久综合一区 | 久久国产黑丝| 亚洲一区二区三区中文字幕| 国产精品v欧美精品v日韩| 一本色道久久综合亚洲精品不| 亚洲精品久久久久久下一站| 欧美区高清在线| 亚洲一区二区三区精品视频| 亚洲无毛电影| 国产综合久久久久影院| 欧美成人午夜| 欧美日韩一区在线观看视频| 亚洲欧美视频在线观看| 欧美一区二区女人| 亚洲第一精品影视| 一区二区91| 激情成人综合网| 亚洲激情综合| 国产精品羞羞答答xxdd| 久久精品色图| 久热成人在线视频| 亚洲无限av看| 久久久久久伊人| 亚洲先锋成人| 久久夜色精品国产亚洲aⅴ | 久久精品五月婷婷| 亚洲精品国精品久久99热一| 一本色道久久综合狠狠躁篇的优点| 国产精品一区亚洲| 亚洲高清不卡一区| 欧美性大战久久久久久久蜜臀| 久久精彩免费视频| 蜜臀久久久99精品久久久久久| 亚洲美女一区| 午夜天堂精品久久久久| 亚洲精品久久久久久下一站| 中国成人黄色视屏| 亚洲国产经典视频| 在线一区二区三区四区五区| 亚洲观看高清完整版在线观看| 亚洲视频图片小说| 亚洲黑丝在线| 性一交一乱一区二区洋洋av| 韩国成人理伦片免费播放| 最新精品在线| 久热这里只精品99re8久| 欧美人妖在线观看| 看欧美日韩国产| 国产精品黄色| 亚洲毛片av| 亚洲精品一区二区网址| 久久久久99精品国产片| 性欧美video另类hd性玩具| 欧美另类视频在线| 欧美成人日本| 精品成人一区二区三区| 欧美在线国产精品| 亚洲激情成人网| 西西裸体人体做爰大胆久久久| 欧美成人精品一区二区| 欧美~级网站不卡| 久久综合电影| 欧美日韩亚洲综合| 国产精品一区二区在线观看网站| 国产情侣一区| 亚洲日韩中文字幕在线播放| 亚洲国产专区| 亚洲色在线视频| 久久精品人人做人人综合| 欧美一级一区| 欧美成人在线免费视频| 亚洲激情视频在线| 亚洲深夜福利网站| 久久男女视频| 国产精品99久久久久久宅男 | 99国产精品久久久久老师| 亚洲国产小视频| 久久精品人人做人人综合| 99精品欧美| 欧美极品在线视频| 亚洲高清视频的网址| 在线不卡中文字幕播放| 久久伊人一区二区| 亚洲国产精品成人精品| 日韩一区二区精品视频| 欧美日韩综合一区| 亚洲免费视频中文字幕| 欧美一乱一性一交一视频| 国产精品美女在线观看| 亚洲女人小视频在线观看| 久久国产66| 亚洲国产一二三| 欧美久久视频| 性做久久久久久久久| 一区二区三区日韩欧美| 亚洲精选视频在线| 99re这里只有精品6| 在线中文字幕不卡| 亚洲午夜久久久久久尤物 | 亚洲三级网站| 亚洲性av在线| 国产精品日韩| 久久久久久久尹人综合网亚洲| 欧美黄污视频| 亚洲专区欧美专区| 国产午夜精品美女毛片视频| 久久天天躁夜夜躁狠狠躁2022| 亚洲激情亚洲| 久久精品成人| 亚洲国产视频一区二区| 欧美日韩1区2区| 欧美一区亚洲二区| 9色精品在线| 国产精品亚洲аv天堂网| 国产偷国产偷亚洲高清97cao | 一区二区三区波多野结衣在线观看| 亚洲激情一区| a4yy欧美一区二区三区| 欧美日韩一区二区三区免费看 | 亚洲激情精品| 亚洲欧美精品| 亚洲精品网址在线观看| 国产精品久久国产精品99gif| 久久美女性网| 99视频一区二区三区| 西西人体一区二区| 一本色道**综合亚洲精品蜜桃冫| 狠狠88综合久久久久综合网| 亚洲自拍偷拍麻豆| 在线一区二区日韩| 亚洲视频电影图片偷拍一区| 亚洲夜间福利| 国产欧美日韩视频一区二区| 久久青草久久| 亚洲一区二区三区免费观看| 国产无一区二区|