Java基础之(十三)递归方法和方法重载

递归方法

说明
一个方法体内调用它自身,这样的方法我们称之为方法递归。方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。

例如有如下这道数学题。已知有一个数列:f(0) = 1, f(1) = 4, f(n+2) = 2*f(n+1)=f(n); 其中,n是大于0的整数,求f(10) 的值。下面程序将定义一个fn方法用于计算f(10) 的值。

public class Recursive{

    public static int fn(int n){
        if(n == 0){
            return 1;
        }

        else if(n == 1){
            return 4;
        }

        else{
            //方法中调用它自身,就是方法递归
            return 2*fn(n-1) + fn(n-2);
        }
    }

public static void main(String[] args){
    //输出f(10) 的结果
    System.out.println(fn(10));
}
}

在上面的fn方法体中,再次调用了fn方法,这就是方法递归。注意fn方法里调用fn的形式:

return 2*fn(n-1) + fn(n-2);

对于fn(10),即等于2*fn(9) + fn(8),其中fn(9)又等于2*fn(8) + fn(7),依次类推,最终会计算到fn(2) 等于2*fn(1) + fn(0),即fn(2)是可计算的,然后一路反算回去,就可以计算出fn(10)的值。

仔细看上面的递归过程,当一个方法不断地调用它本身时,必须在某个时刻方法的返回值是确定的,即不再调用它本身,否则这种递归就变成了无穷递归。因此定义递归方法时,有一条最重要的规定:递归一定要向已知方向递归。

方法重载

Java允许同一个类里定义多个同名方法,只要形参列表不同就行。如果同一个类中包含了两个或两个以上方法的方法名相同,但形参列表不同,则被称为方法重载。
下面程序中包含了方法重载的示例:

public class Overload{
    public void test(){
        System.out.println("无参数的方法");
    }

    public void test(String msg){
        System.out.println("重载的test方法"+msg);
    }

    public static void main(String[] args){
        Overload ol = new Overload();
        ol.test();
        ol.test("hello!");
    }
}
输出结果:
无参数的方法
重载的test方法hello!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值