遞迴的簡便寫法?

Tags: 寫法,

簡單的怎麼寫呢?有什麼優缺點呢?

遞迴的簡便寫法

遞迴的簡便寫法

工具/原料

FOR迴圈

傳遞物件,把物件當作引數來用

方法/步驟

參考java常用遞迴程式碼

//Top代表樹的的根節點

private void showNodeList(Collection topList){

for(Node top:topList)

{

//顯示頂點

System.out.println(top.getName());

//顯示子樹

showNodeList(top.getChildren())

}

}

一些比較好的書籍

遞迴的簡便寫法

所謂遞迴就是迴圈,就是呼叫你本身的迴圈體,需要一個出口,不然就是死迴圈。

遞迴的簡便寫法

請看一個簡單的例子

遞迴的簡便寫法

說明:此方法就是呼叫了遞迴,recursion(car,i)自已呼叫了自已的方法。從此方法中,可以先對它進行了傳遞引數,分別是car(值),i(對遞迴次數的控制),car=2*(car-3000)這是對car第一次的計算,用if判斷是否結束,在這個if判斷中把每次遞迴都放入car,進行計算的值返回。這個遞迴直到12次,計算car的值都放入了car中,打印出car的總和,結束(出口)

遞迴的簡便寫法

缺點:由此可見遞迴就是呼叫自已的,方法與方法之間,類與類之間都可以。當然那我們在使用其的時候,要宣告一個操作的終結點(出口)。遞迴呼叫會增加記憶體負擔,因為每次呼叫一回方法都要開闢一段棧空間(先進後出),知道該方法滿足條件後才釋放。有結束條件了,是非常好的,否則你的遞迴程式會因為棧空間不足而中止的。

遞迴的簡便寫法

壞處:因為遞迴需要你的作業系統中的堆和棧,所以空間消耗上要比非遞迴程式碼要大的多,而且遞迴深度太大了,可能系統支撐不了。

遞迴的簡便寫法

注意事項

用一個方法就可以取到下面所有的子樹的集合

但方法中傳遞的時候傳遞的引數必須是集合,然後遍歷此集合,讓每一元素通過select * from Id=??去那其下面的子集合,然後遍歷出來的子集合直接作為一個引數傳遞你寫的這個方法中,也就是再此呼叫下此方法,這樣最後就可以把每一個分支中的集合都傳遞過來,最後拿到每個分支中的最後一個分支物件傳遞過來後,就發現這就是要For迴圈得到的物件。

相關問題答案