從功能上來說,所有用遞迴實現的都可以用迴圈實現,只不過有時候遞迴實現方便一些,從效率上說,迴圈一般都是大於遞迴的。
如果要處理的問題的深度不大,我認為遞迴和迭代的效率差不多。遞迴是消費棧空間,先遞推(壓棧)然後回歸(逐步釋放占用的棧),如果遞迴的深度比較大的話會很消耗記憶體,如果沒有終止條件會導致棧溢位。而迭代重複執行一些步驟,執行完的就釋放空間,一直到乙個終止條件,所以迭代的空間複雜度應該低一些。一般很明確迭代終止的條件,我認為盡量使用迭代,但像樹遍歷這種很難知道迭代終止的條件,只能用遞推逐步逼近,回歸的方法去做。
遞迴計算階乘:
public static long factorial(int n)else
}
遞迴和迴圈
很早之前看到過一段關於遞迴的解釋覺得很nice 今天寫了四道關於遞迴迴圈的題 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項。n 39 f n f n 1 f n 2 第一眼看就是遞迴啊,簡直完美的遞迴環境,遞迴肯定很爽,這樣想著關鍵 兩三行就搞定了,注意這題的n是從0...
迴圈和遞迴
改為遞迴的關鍵是發現邏輯的 相似性 不要忘記遞迴的 出口 例子 使用遞迴模擬迴圈 列印0到9 public staitc void main string args 修改 列印0 n public static void f int n 接下來我們實現公升序的遞迴,比如列印0到9,這裡為了更一般化,...
遞迴和迴圈
迴圈 迴圈列印整數 public class test9 遞迴 直接或者間接呼叫本身 1.遞迴一定要有退出遞迴的條件 2.思維方式 用來解決複雜問題,不需要太多的邏輯問題。降解 3.方法執行順序 彈棧和壓棧 4.降解 執行順序 只處理本身,其他問題交給下乙個人,大任務分解成小任務。1 列印不指定整數...