遞迴演算法是一種直接或間接地呼叫自身的演算法。在計算機編寫程式中,遞迴演算法對解決一大類問題是十分有效的,它往往使演算法的描述簡潔而且易於理解。
二、例子
99乘法表的例子
1:普通實現99乘法表太簡單,是個程式設計師都會,實現如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package
test.ms;
public
class
test99
system.out.println();
}
}
}
2:用遞迴方式實現 99乘法表
**如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package
test.ms;
public
class
multitable
/**
* 列印出九九乘法表
* @param i
*/
public
static
void
m(
int
i)
else
system.out.println();
}
}
}
遞迴的方式呼叫圖示:
每乙個方法的呼叫都會產生乙個棧幀,壓入到方法棧,當遞迴呼叫的時候,方法棧中棧幀的圖示和上圖類似。
去掉方法中棧幀的引用關係更加直觀:如下圖所示:
簡化掉相應的方法呼叫最後執**況如上圖所示,注意 i 一直在變 j每次都是從1開始 然後遞增到和i相等。
這樣上圖依次出棧後就得到了 99 乘法表:
總結:巢狀for迴圈 和 用遞迴實現 的比較:
棧 主要是用來存放棧幀的,每執行乙個方法就會出現壓棧操作,所以採用遞迴的時候產生的棧幀比較多,遞迴就會影響到記憶體,非常消耗記憶體,而使用for迴圈就執行了乙個方法,壓入棧幀一次,只存在乙個棧幀,所以比較節省記憶體。
Java實現簡單的遞迴操作
首先我們應該了解遞迴的兩大要素 終止條件和遞迴公式 以下便是乙個遞迴的例子,package test 寫乙個遞迴,實現1 3 5 7 9 11.author leon public class recursion 1 return n f n 2 public static void main st...
java中的遞迴簡單示例
解釋 程式呼叫自身的程式設計技巧叫做遞迴。程式呼叫自身的程式設計技巧稱為遞迴 recursion 遞迴做為一種演算法在程式語言中廣泛應用。乙個過程或函式在其定義或說明中有直接或間接呼叫自身的一種方法,它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就...
最簡單的方法實現遞迴
方法一 取出第一條 var first allmenulist.where e e.parentid 0 tolist foreach遞迴 allmenulist.foreach e e.childrenitem allmenulist.where a a.parentid e.id tolist ...