电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python實現(xiàn)求解斐波那契第n項的解法(包括矩陣乘法+快速冪)

瀏覽:73日期:2022-06-22 13:51:25

斐波那契數(shù)列

首先我們來定義一下斐波那契數(shù)列:

Python實現(xiàn)求解斐波那契第n項的解法(包括矩陣乘法+快速冪)

即數(shù)列的第0項:

Python實現(xiàn)求解斐波那契第n項的解法(包括矩陣乘法+快速冪)

算法一:遞歸

遞歸計算的節(jié)點個數(shù)是O(2ⁿ)的級別的,效率很低,存在大量的重復計算。

比如:

f(10) = f(9) + f(8)

f(9) = f(8) + f(7) 重復 8

f(8) = f(7) + f(6) 重復 7

時間復雜度是O(2ⁿ),極慢

def F1(n): if n <= 1: return max(n, 0) # 前兩項 return F1(n-1)+F1(n-2) # 遞歸算法二:記憶化搜索

開一個大數(shù)組記錄中間結果,如果一個狀態(tài)被計算過,則直接查表,否則再遞歸計算。

總共有 n 個狀態(tài),計算每個狀態(tài)的復雜度是 O(1),所以時間復雜度是 O(n)。但由于是遞歸計算,遞歸層數(shù)太多會爆棧。

res = [None]*100000def F2(n): if n <= 1: return max(n, 0) if res[n]: return res[n] # 如果已存在則直接查找返回結果 res[n] = F2(n-1)+F2(n-2) # 不存在則計算 return res[n]算法三:遞推

開一個大數(shù)組,記錄每個數(shù)的值。用循環(huán)遞推計算。

總共計算 n 個狀態(tài),所以時間復雜度是 O(n)。但需要開一個長度是 n 的數(shù)組,內(nèi)存將成為瓶頸。

def F3(n): if n <= 1: return max(n, 0) res = [0, 1] for i in range(2,n+1):res.append(res[i-1]+res[i-2]) return res[n]算法四:遞歸+滾動變量

比較優(yōu)秀的一種解法。仔細觀察我們會發(fā)現(xiàn),遞推時我們只需要記錄前兩項的值即可,沒有必要記錄所有值,所以我們可以用滾動變量遞推。

時間復雜度還是 O(n),但空間復雜度變成了O(1)。

def F4(n): if n <= 1: return max(n, 0) fn, f0, f1 = 0, 1, 0 # fn為最終結果,f0為第0項,f1為第一項, for i in range(2, n+1):fn = f0 + f1 # 前兩項和f0, f1 = f1, fn # 遞推變量 return fn算法五:矩陣乘法+快速冪

利用矩陣運算的性質(zhì)將通項公式變成冪次形式,然后用平方倍增(快速冪)的方法求解第 n 項。

先說通式:

Python實現(xiàn)求解斐波那契第n項的解法(包括矩陣乘法+快速冪)

利用數(shù)學歸納法證明:

這里的a0,a1,a2是對應斐波那契的第幾項

Python實現(xiàn)求解斐波那契第n項的解法(包括矩陣乘法+快速冪)

證畢。

所以我們想要的得到An,只需要求得Aⁿ,然后取第一行第二個元素即可。

如果只是簡單的從0開始循環(huán)求n次方,時間復雜度仍然是O(n),并不比前面的快。我們可以考慮乘方的如下性質(zhì),即快速冪:

Python實現(xiàn)求解斐波那契第n項的解法(包括矩陣乘法+快速冪)

這樣只需要 logn 次運算即可得到結果,時間復雜度為 O(logn)

def mul(a, b): # 首先定義二階矩陣乘法運算 c = [[0, 0], [0, 0]] # 定義一個空的二階矩陣,存儲結果 for i in range(2): # rowfor j in range(2): # col for k in range(2): # 新二階矩陣的值計算c[i][j] += a[i][k] * b[k][j] return cdef F5(n): if n <= 1: return max(n, 0) res = [[1, 0], [0, 1]] # 單位矩陣,等價于1 A = [[1, 1], [1, 0]] # A矩陣 while n:if n & 1: res = mul(res, A) # 如果n是奇數(shù),或者直到n=1停止條件A = mul(A, A) # 快速冪n >>= 1 # 整除2,向下取整 return res[0][1]

總的來說不是很難,適合擴展思路。更多關于Python的資料請關注好吧啦網(wǎng)其它相關文章!希望大家以后多多支持好吧啦網(wǎng)!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 运动木地板价格,篮球馆体育运动木地板生产厂家_欧氏地板 | 液压中心架,数控中心架,自定心中心架-烟台恒阳机电设计有限公司 行星搅拌机,双行星搅拌机,动力混合机,无锡米克斯行星搅拌机生产厂家 | 打造全球沸石生态圈 - 国投盛世 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 液压升降货梯_导轨式升降货梯厂家_升降货梯厂家-河南东圣升降设备有限公司 | 华中线缆有限公司-电缆厂|电缆厂家|电线电缆厂家 | 科研ELISA试剂盒,酶联免疫检测试剂盒,昆虫_植物ELISA酶免试剂盒-上海仁捷生物科技有限公司 | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 伺服电机_直流伺服_交流伺服_DD马达_拓达官方网站 | 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 高通量组织研磨仪-多样品组织研磨仪-全自动组织研磨仪-研磨者科技(广州)有限公司 | 回收二手冲床_金丰旧冲床回收_协易冲床回收 - 大鑫机械设备 | 安徽华耐泵阀有限公司-官方网站 安德建奇火花机-阿奇夏米尔慢走丝|高维|发那科-北京杰森柏汇 | 电机铸铝配件_汽车压铸铝合金件_发动机压铸件_青岛颖圣赫机械有限公司 | 武汉不干胶印刷_标签设计印刷_不干胶标签印刷厂 - 武汉不干胶标签印刷厂家 | DAIKIN电磁阀-意大利ATOS电磁阀-上海乾拓贸易有限公司 | uv固化机-丝印uv机-工业烤箱-五金蚀刻机-分拣输送机 - 保定市丰辉机械设备制造有限公司 | 元拓建材集团官方网站| 实体店商新零售|微赢|波后|波后合作|微赢集团 | 电渗析,废酸回收,双极膜-山东天维膜技术有限公司 | 专业广州网站建设,微信小程序开发,一物一码和NFC应用开发、物联网、外贸商城、定制系统和APP开发【致茂网络】 | 热缩管切管机-超声波切带机-织带切带机-无纺布切布机-深圳市宸兴业科技有限公司 | 首页_欧瑞传动官方网站--主营变频器、伺服系统、新能源、软起动器、PLC、HMI | 量子管通环-自清洗过滤器-全自动反冲洗过滤器-沼河浸过滤器 | 【黄页88网】-B2B电子商务平台,b2b平台免费发布信息网 | 诸城网站建设-网络推广-网站优化-阿里巴巴托管-诸城恒泰互联 | 企业管理培训,企业培训公开课,企业内训课程,企业培训师 - 名课堂企业管理培训网 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | 电地暖-电采暖-发热膜-石墨烯电热膜品牌加盟-暖季地暖厂家 | 美国HASKEL增压泵-伊莱科elettrotec流量开关-上海方未机械设备有限公司 | 天津中都白癜风医院_天津白癜风医院_天津治疗白癜风 | 阳光模拟试验箱_高低温试验箱_高低温冲击试验箱_快速温变试验箱|东莞市赛思检测设备有限公司 | 私人别墅家庭影院系统_家庭影院音响_家庭影院装修设计公司-邦牛影音 | 广州迈驰新GMP兽药包装机首页_药品包装机_中药散剂包装机 | 水性绝缘漆_凡立水_绝缘漆树脂_环保绝缘漆-深圳维特利环保材料有限公司 | 膜结构车棚|上海膜结构车棚|上海车棚厂家|上海膜结构公司 | 垃圾处理设备_餐厨垃圾处理设备_厨余垃圾处理设备_果蔬垃圾处理设备-深圳市三盛环保科技有限公司 | MVR蒸发器厂家-多效蒸发器-工业废水蒸发器厂家-康景辉集团官网 | 密集架-密集柜厂家-智能档案密集架-自动选层柜订做-河北风顺金属制品有限公司 |