遞歸函數(shù)效率高嗎 遞歸算法的速度會特別慢的原因是什么?
遞歸算法的速度會特別慢的原因是什么?遞歸調(diào)用本身需要使用系統(tǒng)堆棧,每次分配函數(shù)內(nèi)存和堆棧都需要時間。然而,這個過程并不需要太多時間??梢哉f,簡單遞歸本身并不比非遞歸慢多少。然而,在實際應用中,人們會發(fā)
遞歸算法的速度會特別慢的原因是什么?
遞歸調(diào)用本身需要使用系統(tǒng)堆棧,每次分配函數(shù)內(nèi)存和堆棧都需要時間。然而,這個過程并不需要太多時間。可以說,簡單遞歸本身并不比非遞歸慢多少。然而,在實際應用中,人們會發(fā)現(xiàn)遞歸在處理一些問題,特別是遞歸問題時效率很低。這個問題是由重復計算引起的,例如,用遞推法求解斐波那契數(shù)列的第n項,一般的遞推公式是f(n)=f(n-1)f(n-2)f(2)=1F(1)=當你計算f(5)時,你會嘗試計算f(4)和f(3)。但是,當計算f(4)時,還需要計算f(3),因此f(3)被調(diào)用兩次。假設這個過程是指數(shù)擴展的,并且效率會隨著n的增加而迅速下降。為了解決這個問題,我們可以使用記憶法的思想。定義內(nèi)存數(shù)組R,并將函數(shù)體更改為:Define f(n):如果定義了R[n],那么只需返回R[n]作為答案。否則,f(n)=f(n-1)f(n-2)在返回值之前,將其記在R[n]中。改進后的遞推函數(shù)的效率與遞推算法基本相同