Java用佇列優化遞迴

2021-07-31 21:58:08 字數 557 閱讀 7855

遞迴的優點

遞迴**寫起來比較方便簡潔,結構層次清晰,可讀性比較好。

遞迴的缺點

遞迴需要呼叫函式,遞迴需要系統堆疊,遞迴空間和時間消耗都比較大,並且如果遞迴太深,會發生 堆疊溢位,系統會奔潰。

如何解決遞迴太深的問題?

當使用遞迴遍歷的目錄可能存在遞迴太深的時候,我們可以選擇用佇列來優化遞迴。

遍歷檔案例子:

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 如果你使用的程式語言能夠支援那是再好不過。不過即使如此,也要注意對演算法的細微調整將會使尾遞迴變為普通遞迴。希望編譯器能自動探測到這一點,否則本來我們將...