Python遞歸時間復雜度
遞歸也是常見算法之一,其時間復雜度一般認為O(logn),但遞歸算法的時間復雜度本質(zhì)上是要看: 遞歸的次數(shù) * 每次遞歸中的操作次數(shù)
舉例面試題:求x的n次方
思路一:for循環(huán)
def x_n(x,n): ? ? """ ? ? 時間復雜度O(n) ? ? """ ? ? if n==0: ? ? ? ? return 1 ? ?? ? ? return x*x_n(x,n-1) ? ?? if __name__=='__main__': ? ? print(x_n(2,0)) ? ? print(x_n(2,3)) ? ? print(x_n(2,4))
思路二:遞歸
但是遞歸時間復雜度未必更優(yōu),
比如:
def x_n(x,n): ? ? """ ? ? 時間復雜度O(n) ? ? """ ? ? if n==0: ? ? ? ? return 1 ? ?? ? ? return x*x_n(x,n-1) ? ?? if __name__=='__main__': ? ? print(x_n(2,0)) ? ? print(x_n(2,3)) ? ? print(x_n(2,4))
也可以是:
def x_n(x,n): ? ? """ ? ? 時間復雜度O(n) ? ? """ ? ? if n==0: ? ? ? ? return 1 ? ? if n%2==1: ? ? ? ? return x*x_n(x,n//2)*x_n(x,n//2) ? ?? ? ? else: ? ? ? ? return x_n(x,n//2)*x_n(x,n//2) if __name__=='__main__': ? ? print(x_n(2,0)) ? ? print(x_n(2,3)) ? ? print(x_n(2,4))
如果面試官詢問是否還可以優(yōu)化?可思考的方向是遞歸模塊提取出來。
def x_n(x,n):
? ? """
? ? 時間復雜度O(logn)
? ? """
? ? if n==0:
? ? ? ? return 1
? ? t=x_n(x,n//2)
? ? #print("t:",t)
? ? if n%2==1:
? ? ? ? return x*t*t
? ??
? ? return t*t
if __name__=='__main__':
? ? print(x_n(2,0))
? ? print(x_n(2,3))
? ? print(x_n(2,4))到此這篇關于Python遞歸時間復雜度的文章就介紹到這了,更多相關Python遞歸內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python游戲開發(fā)之視頻轉(zhuǎn)彩色字符動畫
這篇文章主要為大家詳細介紹了python游戲開發(fā)之視頻轉(zhuǎn)彩色字符動畫,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04
Python3實現(xiàn)將本地JSON大數(shù)據(jù)文件寫入MySQL數(shù)據(jù)庫的方法
這篇文章主要介紹了Python3實現(xiàn)將本地JSON大數(shù)據(jù)文件寫入MySQL數(shù)據(jù)庫的方法,涉及Python針對json大數(shù)據(jù)文件的逐行讀取、mysql數(shù)據(jù)庫寫入等相關操作技巧,需要的朋友可以參考下2018-06-06
python繼承threading.Thread實現(xiàn)有返回值的子類實例
這篇文章主要介紹了python繼承threading.Thread實現(xiàn)有返回值的子類實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
python通過函數(shù)名調(diào)用函數(shù)的幾種方法總結(jié)
今天帶大家學習的是怎么使用python通過函數(shù)名調(diào)用函數(shù),文中對python通過函數(shù)名調(diào)用函數(shù)的幾種方法有非常詳細的介紹,需要的朋友可以參考下2021-06-06
python 利用openpyxl讀取Excel表格中指定的行或列教程
這篇文章主要介紹了python 利用openpyxl讀取Excel表格中指定的行或列教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
Python bytes string相互轉(zhuǎn)換過程解析
這篇文章主要介紹了Python bytes string相互轉(zhuǎn)換過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03

