理論上,任何迴圈都可以用遞迴來代替。有些函式式語言甚至不提供迴圈結構,而僅僅使用遞迴。
當然,遞迴也可以通過迴圈和自己定義的棧結構來模擬。
遞迴與數學上的遞推公式有點相似,相同點在於都是在尋找相似性
package no4;
public class test03
public static void main(string args)
}
關於遞迴問題的分解不是唯一的,此處是先做最後一步的輸出(end),然後把其他步驟交給後面進行
如我可以先列印第一步,後續的工作交給其他進行
package no4;
public class test04
public static void main(string args)
}
如我可以先列印begin和end,中間的工作可以交給其他人
package no4;
public class test05
public static void main(string args)
}
如可以讓其他人列印上半部分,我列印中間部分,其他人列印下半部分
package no4;
public class test09
if((end - begin + 1 ) % 2 != 0 )//begin-end所表示的範圍長度是奇數
f(begin, middle - 1);
else
f(begin, middle);
if((end-begin +1) % 2 != 0) //begin-end所表示的範圍長度是奇數
system.out.println(middle);
f(middle + 1, end);
}public static void main(string args)
}
上面這乙個**我感覺類似於二叉樹的遍歷了, 乙個演算法你可能碰巧做對,但是用語言描述出來,讓別人理解你的想法有一定的難度= =
Java基礎之遞迴演算法
鍊錶 linked list 一種常見的基礎資料結構,是一種線性表,但是並不會按線性的順序儲存資料,而是在每乙個節點裡存到是下乙個節點的指標 pointer 在鍊錶資料結構中,我們需要使用到遞迴演算法。遞迴演算法是一種直接或者間接地呼叫自身演算法的過程。在計算機編寫程式中,遞迴演算法對解決一大類問題...
JAVA基礎 簡析遞迴演算法
概念 遞迴演算法 遞迴演算法是把問題轉化為規模縮小了的同類問題的子問題,然後遞迴呼叫函式 或者過程 來表示函式的解。遞迴函式 乙個過程 或者函式 直接或間接呼叫自己本身,這種過程 或者函式 叫做遞迴函式。特點 遞迴就是在過程或函式裡呼叫自身。在使用遞迴策略時,必須有乙個明確的遞迴結束條件。稱為遞迴出...
演算法基礎篇(1)迴圈和遞迴
一般情況下,只有在處理大量資料時才會借助於計算機,所以演算法設計中很重要的工作是把對資料的處理歸結成較為規範的可重複的 機械化操作 然後交給計算機去完成。即將重複處理的大量資料的步驟抽象化成 迴圈 或 遞迴 的模式,設計出可以針對不同規模解決問題的演算法。迴圈演算法設計中,乙個重要的工作就是從已經建...