遞迴的優點
遞迴**寫起來比較方便簡潔,結構層次清晰,可讀性比較好。
遞迴的缺點
遞迴需要呼叫函式,遞迴需要系統堆疊,遞迴空間和時間消耗都比較大,並且如果遞迴太深,會發生 堆疊溢位,系統會奔潰。
如何解決遞迴太深的問題?
當使用遞迴遍歷的目錄可能存在遞迴太深的時候,我們可以選擇用佇列來優化遞迴。
遍歷檔案例子:
public
void
getfile(file file)
else
if(file.isfile())
}
5 . 使用佇列優化。
//建立乙個佇列
queenqueue = new linkedlist();
queue.offer(file);
while(!queue.isempty())else
}
6 . 總結
如果遞迴的是深而不廣的樹時,應該使用佇列來優化遞迴;如果遞迴是廣而不深的樹的時候,就應該用遞迴來優化佇列。
用遞迴反轉棧(Java實現
用遞迴來反轉棧 最開始的想法是乙個遞迴函式解決,然後仔細想想不行 解法 乙個遞迴函式返回棧的棧底元素並將之移除 另乙個遞迴函式進行遞迴壓入得到的資料 by returnzhang 遞迴翻轉棧 public class reverse 壓入函式 public void push integer num...
用尾遞迴優化Erlang的lists map
用尾遞迴優化erlang的lists map erlang的lists庫中的map函式是這樣寫的 spec map 2 fun d r d r map f,h t f h map f,t map f,when is function f,1 顯然這裡有個問題,f h map f,t 這句沒有用為遞迴...
java效能優化方案6 避免遞迴
6 避免遞迴 現在,類似scala這樣的函式式程式語言都鼓勵使用遞迴。因為遞迴通常意味著能分解到單獨個體優化的尾遞迴 tail recursing 如果你使用的程式語言能夠支援那是再好不過。不過即使如此,也要注意對演算法的細微調整將會使尾遞迴變為普通遞迴。希望編譯器能自動探測到這一點,否則本來我們將...