亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python斐波那契數列的計算方法

2020-02-15 23:04:34
字體:
來源:轉載
供稿:網友

題目:

計算斐波那契數列。具體什么是斐波那契數列,那就是0,1,1,2,3,5,8,13,21,34,55,89,144,233。

要求:

時間復雜度盡可能少

分析:

給出了三種方法:

方法1:遞歸的方法,在這里空間復雜度非常大。如果遞歸層數非常多的話,在python里需要調整解釋器默認的遞歸深度。默認的遞歸深度是1000。我調整了半天代碼也沒有調整對,因為遞歸到1000已經讓我的電腦的內存有些撐不住了。

方法2:將遞歸換成迭代,這樣時間復雜度也在代碼中標注出來了。

方法3:這種方法利用了求冪的簡便性,采用了位運算。但是代價在于需要建立矩陣,進行矩陣運算。所以,當所求的數列的個數較小時,該方法還沒有第二種簡便。但是當取的索引值n超級大時,這種方法就非常方便了。時間復雜度在代碼中標注出來了。

代碼:

#!usr/bin/python2.7# -*- coding=utf8 -*-# @Time  : 18-1-3 下午2:53# @Author : Cecil Charlieimport sysimport copysys.setrecursionlimit(1000) # 用來調整解釋器默認最大遞歸深度class Fibonacci(object):  def __init__(self):    pass  def fibonacci1(self, n):    '''      原始的方法,時間復雜度為 o(2**n),因此代價較大    :param n: 數列的第n個索引    :return: 索引n對應的值    '''    if n < 1:      return 0    if n == 1 or n == 2:      return 1    return self.fibonacci1(n-1) + self.fibonacci1(n-2)  @staticmethod  def fibonacci2(n):    """      用循環替代遞歸,空間復雜度急劇降低,時間復雜度為o(n)    """    if n < 1:      return 0    if n == 1 or n == 2:      return 1    res = 1    tmp1 = 0    tmp2 = 1    for _ in xrange(1, n):      res = tmp1 + tmp2      tmp1 = tmp2      tmp2 = res    return res  def fibonacci3(self, n):    """      進一步減少迭代次數,采用矩陣求冪的方法,時間復雜度為o(log n),當然了,這種方法需要額外計算矩陣,計算矩陣的時間開銷沒有算在內.其中還運用到了位運算。    """    base = [[1, 1], [1, 0]]    if n < 1:      return 0    if n == 1 or n == 2:      return 1    res = self.__matrix_power(base, n-2)    return res[0][0] + res[1][0]  def __matrix_power(self, mat, n):    """      求一個方陣的冪    """    if len(mat) != len(mat[0]):      raise ValueError("The length of m and n is different.")    if n < 0 or str(type(n)) != "<type 'int'>":      raise ValueError("The power is unsuitable.")    product, tmp = [], []    for _ in xrange(len(mat)):      tmp.append(0)    for _ in xrange(len(mat)):      product.append(copy.deepcopy(tmp))    for _ in xrange(len(mat)):      product[_][_] = 1    tmp = mat    while n > 0:      if (n & 1) != 0: # 按位與的操作,在冪數的二進制位為1時,乘到最終結果上,否則自乘        product = self.__multiply_matrix(product, tmp)      tmp = self.__multiply_matrix(tmp, tmp)      n >>= 1    return product  @staticmethod  def __multiply_matrix(mat1, mat2):    """      矩陣計算乘積    :param m: 矩陣1,二維列表    :param n: 矩陣2    :return: 乘積    """    if len(mat1[0]) != len(mat2):      raise ValueError("Can not compute the product of mat1 and mat2.")    product, tmp = [], []    for _ in xrange(len(mat2[0])):      tmp.append(0)    for _ in xrange(len(mat1)):      product.append(copy.deepcopy(tmp))    for i in xrange(0, len(mat1)):      for j in xrange(0, len(mat2[0])):        for k in xrange(0, len(mat1[0])):          if mat1[i][k] != 0 and mat2[k][j] != 0:            product[i][j] += mat1[i][k] * mat2[k][j]    return productf = Fibonacci()print f.fibonacci1(23)print f.fibonacci2(23)mat1 = [[2,4,5],[1,0,2],[4,6,9]]mat2 = [[2,9],[1,0],[5,7]]print f.fibonacci3(23)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品视频在线| 久久久久国产精品一区| 欧美日韩国产专区| 美日韩在线视频| 欧美日韩国产成人在线| 日韩av网站电影| 亚洲激情在线观看视频免费| 国产不卡在线观看| 欧美裸体xxxx极品少妇软件| 91av视频在线观看| 欧美日韩午夜视频在线观看| 日韩中文字幕视频在线| 日韩欧美aⅴ综合网站发布| 丝袜美腿亚洲一区二区| 正在播放国产一区| 欧美亚洲视频在线观看| 亚洲成色777777在线观看影院| 久久韩剧网电视剧| 亚洲国产精品视频在线观看| 57pao成人国产永久免费| 这里精品视频免费| 成人欧美一区二区三区在线| 亚洲a级在线播放观看| 国语自产精品视频在线看抢先版图片| 欧美电影电视剧在线观看| 亚洲成avwww人| 欧美一级电影免费在线观看| 亚洲精品日韩欧美| 久久久精品一区| 亚洲无限乱码一二三四麻| 国产ts一区二区| 成人激情在线播放| 亚洲а∨天堂久久精品9966| 国产精品麻豆va在线播放| 日韩在线视频播放| 国产一区二区三区久久精品| 亚洲a在线观看| 亚洲性xxxx| 欧美黑人xxx| 国产精品成人在线| 91成人天堂久久成人| 一区二区三区天堂av| 欧美寡妇偷汉性猛交| 国产午夜精品全部视频在线播放| 国产视频精品xxxx| 成人国产精品久久久| 狠狠做深爱婷婷久久综合一区| 国产91精品黑色丝袜高跟鞋| 日韩av网站在线| 国产成人福利视频| 欧美xxxx14xxxxx性爽| 欧美国产激情18| 国产精品久久久久久久久久99| 国模精品视频一区二区| 亚洲欧洲一区二区三区在线观看| 日本精品一区二区三区在线播放视频| 欧美日韩免费看| 日本一区二区不卡| 国产精品第100页| 欧美日韩国产激情| 韩国美女主播一区| 欧美日韩午夜视频在线观看| 久久久久久久久久久亚洲| 精品国产一区二区三区四区在线观看| 久久色精品视频| 欧美国产日韩视频| 国产精品视频午夜| 日韩av手机在线| 亚洲第一区第一页| 久热99视频在线观看| 成人免费看吃奶视频网站| 欧美大片免费观看| 一区二区欧美在线| 亚洲国产日韩欧美在线动漫| 中文字幕av一区中文字幕天堂| 92看片淫黄大片欧美看国产片| 国产一区二区丝袜| 亚洲天堂开心观看| 成人免费看黄网站| 日韩成人中文字幕在线观看| 国产成人综合精品在线| 九九热最新视频//这里只有精品| 欧美成人免费网| 欧美激情第一页xxx| 中文字幕免费国产精品| 国产精品中文字幕在线观看| 精品国产区一区二区三区在线观看| 岛国av一区二区| 成人美女免费网站视频| 精品久久久久国产| 97在线观看视频国产| 久久久综合免费视频| 亚洲在线免费看| 欧美又大又粗又长| 亚洲精品国产精品国产自| 国内偷自视频区视频综合| 欧美夫妻性生活视频| 色综合视频一区中文字幕| 岛国av一区二区| 亚洲欧美激情精品一区二区| 久久夜色精品国产亚洲aⅴ| 日韩女优在线播放| 高清欧美性猛交| 久久视频在线视频| 亚洲性视频网站| 91精品久久久久久久久久| 亚洲人成自拍网站| 91精品视频播放| 亚洲成人精品久久| 国产精品国产亚洲伊人久久| 国产日韩中文字幕在线| 亚洲国产成人精品一区二区| 狠狠躁18三区二区一区| 国产精品1234| 色av中文字幕一区| 国产精品视频1区| 久久免费少妇高潮久久精品99| 亚洲激情视频在线观看| 亚洲欧洲一区二区三区在线观看| 国产精品一区二区久久国产| 久久这里只有精品视频首页| 亚洲另类图片色| 欧美日韩爱爱视频| 26uuu日韩精品一区二区| 欧美高清电影在线看| 日韩激情视频在线| 精品无人区乱码1区2区3区在线| 欧美成人在线免费| 国产综合色香蕉精品| 欧美野外猛男的大粗鳮| 国产欧美一区二区三区久久| 日韩精品电影网| 精品偷拍一区二区三区在线看| 精品国产31久久久久久| 久久久免费电影| 欧美黑人又粗大| 久久久精品视频在线观看| 亚洲天堂av在线免费观看| 不卡毛片在线看| 麻豆国产精品va在线观看不卡| 亚洲一级片在线看| 91在线观看免费网站| 国产精品久久久久久搜索| 欧美激情精品久久久久久| 亚洲视频在线播放| 国产精品视频男人的天堂| 日本亚洲欧洲色α| 欧美在线精品免播放器视频| 亚洲精品久久在线| 中文字幕久久久av一区| 欧美亚洲视频在线看网址| 国产精品吹潮在线观看| 中文字幕不卡在线视频极品| 欧美成人免费全部观看天天性色| 国产精品美女免费视频| 国产玖玖精品视频| 国产精品草莓在线免费观看| 一区二区三区视频免费| 黄色成人av在线| 亚洲欧美在线一区二区| 清纯唯美亚洲综合| 日本中文字幕成人| 欧美日韩国产精品一区| 91久久久久久国产精品|