改為遞迴的關鍵是發現邏輯的「相似性"
不要忘記遞迴的「出口」
例子:使用遞迴模擬迴圈 列印0到9
public staitc void main(string args)
}
修改:
// 列印0 - n
public static void f(int n)
接下來我們實現公升序的遞迴,比如列印0到9,這裡為了更一般化,
我們使用begin和end做引數
public static void f2(begin, end)
構造相似性:
不相似可能是因為缺少引數。
例如:使用遞迴實現 求乙個陣列的累加和。
// 求a 陣列中從begin開始一直到結束的元素和。
public static int f(int a, int begin)
例子:比較兩個字串是否相同。
public static boolean f(string s1, string s2)
遞迴和迴圈
從功能上來說,所有用遞迴實現的都可以用迴圈實現,只不過有時候遞迴實現方便一些,從效率上說,迴圈一般都是大於遞迴的。如果要處理的問題的深度不大,我認為遞迴和迭代的效率差不多。遞迴是消費棧空間,先遞推 壓棧 然後回歸 逐步釋放占用的棧 如果遞迴的深度比較大的話會很消耗記憶體,如果沒有終止條件會導致棧溢位...
遞迴和迴圈
很早之前看到過一段關於遞迴的解釋覺得很nice 今天寫了四道關於遞迴迴圈的題 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項。n 39 f n f n 1 f n 2 第一眼看就是遞迴啊,簡直完美的遞迴環境,遞迴肯定很爽,這樣想著關鍵 兩三行就搞定了,注意這題的n是從0...
遞迴和迴圈
迴圈 迴圈列印整數 public class test9 遞迴 直接或者間接呼叫本身 1.遞迴一定要有退出遞迴的條件 2.思維方式 用來解決複雜問題,不需要太多的邏輯問題。降解 3.方法執行順序 彈棧和壓棧 4.降解 執行順序 只處理本身,其他問題交給下乙個人,大任務分解成小任務。1 列印不指定整數...