Java中的递归思想

来源:互联网 发布:出国旅游信用卡知乎 编辑:程序博客网 时间:2024/05/20 18:53
递归有直接递归和间接递归,一般用于树状结构(递归算法是非常耗内存的)

•直接递归:函数在执行过程中调用本身。

•间接递归:函数在执行过程中调用其它函数再经过这些函数调用本身。

问题如下:第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;    }}
运行结果: