遞迴可能出現的效能問題

2021-07-26 09:50:26 字數 353 閱讀 9020

遞迴演算法的**很簡潔。但同時也存在缺點。

遞迴由於函式要呼叫自身,而函式呼叫是有時間和空間的消耗的。每一次函式呼叫,都需要在記憶體棧中分配空間以儲存引數、返回位址及臨時變數,而且往棧裡壓入資料和彈出資料都需要時間。

遞迴有可能很多計算都是重複的,從而對效能帶來很大的負面影響。遞迴的本質是把乙個問題分解成兩個或者多個小問題。如果小問題有重疊的部分,那麼就存在重複的計算。

除了效率外,遞迴還可能存在呼叫棧溢位的問題。前面提到的每一次函式呼叫在記憶體棧中分配空間,而每個程序的棧容量是有限的。當遞迴呼叫的層級太多時,就會超出棧的容量,從而導致呼叫棧溢位。

使用redis可能出現的問題

首先我們應該先明確快取處理的流程 前台請求,後台先從快取中取資料,取到直接返回結果,取不到時從資料庫中取,資料庫取到更新快取,並返回結果,資料庫也沒取到,那直接返回空結果.1 快取雪崩 指快取由於某些原因 比如 宕機 cache服務掛了或者不響應 整體失效了,導致大量請求到達後端資料庫,從而導致資料...

寫R包可能出現的問題

最近學習寫r包,參考部落格 如何快速寫乙個r包。根據該部落格教程寫r包非常簡單,補充我遇到的兩個小問題。寫入函式前需要先載入所寫的包 libray 所寫的包 the existing namespace file was not generated by roxygen2 自動生成的namespac...

關於遞迴的效能問題

一直以為遞迴比較方便,也知道遞迴相對於堆疊實現會有一些效能方面的問題,一直沒引起重視,但今天測試了乙個例項,結果真的很嚇人,看來以後在這方面一定要多多注意了。問題的提出,題目 已知數列 1,1,2,3,5,8,13,21,34,求第50個數值?並用c 寫出演算法?一看就知道是菲波那契數列,用簡單的遞...