递归有直接递归和间接递归,一般用于树状结构(递归算法是非常耗内存的)
•直接递归:函数在执行过程中调用本身。
•间接递归:函数在执行过程中调用其它函数再经过这些函数调用本身。
问题如下:第1个人10,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大?
在代码中,我们可以分别以循环、递归、尾递归思想来实现!!!
package org.nc.demo;
public class nineDemo {
public static void main(String[] args) {
System.out.println("递归结果"+computeAge(8));
System.out.println("尾递归结果:"+GetAgeEnd(4,10));
System.out.println("循环结果:"+GetAge(8));
}
//递归 computeAge(7) + 2 >> computeAge(6) + 2 + 2 >> ...
public static int computeAge(int n)
{
if(n==1) //边界
return 10;
return computeAge(n-1) + 2;
}
//尾递归就是把上一个方法的返回值当作参数传给下一个方法,不用像递归再向上返回
public static int GetAgeEnd(int num,int result)
{
if (num == 1)
return result;
return GetAgeEnd(num-1,result+2);
}
//循环
public static int GetAge(int num)
{
int age = 10;
while (num>1)
{
age += 2;
num -= 1;
}
return age;
}
}
运行结果: