Java---方法---递归以及重载

本文详细介绍了Java中的方法概念,包括方法的递归应用及其终止条件,并通过实例演示了如何使用递归来求解阶乘问题。此外,还介绍了方法重载的概念及其实现方式,通过实例展示了如何针对不同类型的数据实现相同名称的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中的方法类似于C语言中的函数,其作用就是将一些固定作用的代码片段存为一个整体,当需要使用时直接调用,就可以使代码整体变得条例清晰.

方法的递归

当一个问题满足以下三个要求时,就可以使用递归来解决这个问题:

1.一个比较大的问题可以拆分为多个子问题.

2.拆分后的子问题与原问题除了数据规模不同,其他解决思路完全相同.

3.存在终止递归的条件.

eg:

使用递归求一个数num的阶乘.

按照上面的思路一步一步来进行操作.

首先,num这个数的阶乘可以转换为num * (num-1)!,所以满足第一点,可以拆分.

第二点,拆分后的子问题就为求解(num-1)!,而(num-1)的阶乘为(num-1)*((num-1)-1)!.也满足第二点.

第三点,存在终止条件.num的阶乘求解过程就为从1一直乘到num,所以当num-1 == 1的时候,递归终止.

条件满足,具体实现:

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
    int num = scan.nextInt();
    int ret = func(num);
    System.out.println(ret);
}

public  static int func(int num) {
//当num == 1的时候,递归终止
    if(num == 1){
        return 1;
    }
    return num * func(num - 1);
    }
}

方法的重载

在同一个类中,定义了若干个方法名称相同,参数列表不同(参数类型或者参数个数),与返回值无关,这样的一组方法称为方法的重载.

eg:

有一个SumInt方法,求两个整数中的和,这是很容易实现的.但是如果要求两个浮点数的最大值,我们就得再写一个SumDouble方法,来求出三个浮点数的和.使用的时候就得调用两次.

实际上,在Java中,方法的重载就很好解决了这一问题,可以定义两个方法,但是方法的名称可以都为Sum,可以让程序更清晰易读。

实际上,Java中的System.out.println()方法就是方法重载的结果.

import java.util.Scanner;

import static netscape.security.Privilege.add;

public class Test {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int num1 = scan.nextInt();
        int num2 = scan.nextInt();
        double num3 = scan.nextDouble();
        double num4 = scan.nextDouble();
        double num5 = scan.nextDouble();
        int ret = Sum(num1,num2);
        double ret1 = Sum(num3,num4,num5);
        System.out.println(ret);
        System.out.println(ret1);
    }

    public static int  Sum(int num1, int num2) {
        return num1 + num2;
    }

    public static double  Sum(double num3, double num4, double num5) {
        return num3 + num4 + num5;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值