递归
定义:自己调用自己,或者间接调用自己的程序。
首先,我们先来看看这道题目:
.推算年龄
有5个人坐在一起, 问第5个人多少岁? 他说比第 4个人大2岁。 问第4个人岁数, 他说比第3个人大3岁。 问第3个人, 又说比第2个人大2岁。 问第2个人,
有5个人坐在一起, 问第5个人多少岁? 他说比第 4个人大2岁。 问第4个人岁数, 他说比第3个人大3岁。 问第3个人, 又说比第2个人大2岁。 问第2个人,
说比第1个人大2岁。 最后问第1个人, 他说是10岁。请问第个人多大?
按照我们的思维,我们知道了最后一个人的年龄是10岁,他比前一个人小2岁,所以,倒数第二个人就是12岁,而倒数第二个人又比前一个人小2岁,所以第三个人的年龄就是14岁,依次类推,那么第五个人就是18岁。经过分析,我们可以知道有如下公式:
age(1)=10 | |
age(n) =| | |
age(n)=age(n-1)+2 |
从这个公式我们可以看出了:递归需要一个边界条件:age(1)=10,
递归体: age(n) = age(n-1),
上图表示了这个递归的详细过程,
代码:
public int getAge(int n) {
if (n == 1) {
return 10;
} else {
return getAge(n-1)+2;
}
}
以上就是我理解的递归,我知道这只是递归的皮毛而已,但是希望对你有帮助,祝你好运!