天天看點

遞歸的優缺點

優點:

  1. 簡潔

2.在樹的前序,中序,後序周遊算法中,遞歸的實作明顯要比循環簡單得多。

缺點:

1.遞歸由于是函數調用自身,而函數調用是有時間和空間的消耗的:每一次函數調用,都需要在記憶體棧中配置設定空間以儲存參數、傳回位址以及臨時變量,而往棧中壓入資料和彈出資料都需要時間。->效率

2.遞歸中很多計算都是重複的,由于其本質是把一個問題分解成兩個或者多個小問題,多個小問題存在互相重疊的部分,則存在重複計算,如fibonacci斐波那契數列的遞歸實作。->效率

3.調用棧可能會溢出,其實每一次函數調用會在記憶體棧中配置設定空間,而每個程序的棧的容量是有限的,當調用的層次太多時,就會超出棧的容量,進而導緻棧溢出。->性能