遞歸算法

直接或間接調用函數本身,則該函數稱爲遞歸函數。

捨得捨得,有舍纔有得。
遞歸遞歸,有遞纔有歸。
遞歸,先確定終止條件或者說是出口。當參數爲何值時,遞歸結束,之後直接把結果返回。注意,確定出口時前幾個數可能不能用規律得出,需要一 一確定下來。
再根據不同的條件進行變化,即找出函數的等價關係式。

舉一個簡單例子Fibonacci具體

int fib(int n)
{
	if(n<=1)return 1;
	return fib(n-1)+fib(n-2);
}

再舉個經典例子階乘

int f(int n)
{
	if(n==0)return 1;
	else return n*f(n-1);
}

實際上遞歸雖然看似很精簡,實際效率很低,時間複雜度可達到O(2^N
)。

遞歸調用實際上是函數自己在調用自己,而函數的調用開銷是很大的,系統要爲每次函數調用分配存儲空間,並將調用點壓棧予以記錄。而在函數調用結束後,還要釋放空間,彈棧恢復斷點。所以說,函數調用不僅浪費空間,還浪費時間。
——作者:Clemente
鏈接:https://www.jianshu.com/p/7a10b0221964

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章