递归算法的理解
优点
:递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
必须条件:
1. 子问题须与原始问题为同样的事,且更为简单;(有一定的逻辑可循)
2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。(
递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
)
缺点:容易造成栈内存溢出。(
递归算法
解题相对常用的算法如普通循环等,运行效率较低。因此,应该尽量避免使用递归,除非没有更好的
算法
或者某种特定情况,递归更为适合的时候。在
递归调用
的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成
栈溢出
等。)
例子:
第1个人10岁,第2人比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大?
public
calss A2{
public
static
void
PersonAge
(
int
n){
if
(n==
1
){
return
10
; }
return
PersonAge(n-
1
)+
2
}
public
static
void
main
(String[] args){ System.
out
.println( PersonAge(
8
)); } }
使用FOR循环计算第8个人的年龄
public
calss A2{
public
static
void
main
(String[] args){
int
age=
10
;
for
(
int
i=
1
;i<
8
;i++){ age+=
2
; } } System,
out
.println(
"第8个人的年龄"
+age); }
最后结果24