方法的基本用法, 方法重载, 方法递归

本文深入解析Java中的方法概念,包括基本用法、方法重载及递归应用。详细介绍了方法的定义、参数类型、返回值、重载规则以及递归的实现方式与注意事项,对比了递归与非递归在求解斐波那契数列问题上的效率差异。

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

方法的基本用法, 方法重载, 方法递归
方法
是一个代码片段,类似于c语言中的函数。方法的存在能够模块化的组织代码,做到代码的重复使用,不必写过多重复功能的代码。
使用方法时注意:
1.方法定义时每个参数要指定类型,也可以没有参数;
2.方法定义时如果没有返回值,则返回值类型应该写成void;
3.方法定义时的参数称为“形参”,方法调用时的参数称为“实参”;
4.方法的定义必须在类中,和c语言不同的是代码书写在调用位置的上方和下方均可以;
5.注意:在java中没有“函数声明”的概念。
方法重载
是同一个类中,方法名相同但是方法的参数不同(参数个数或者参数类型),构成了方法的重载,注意:当两个方法的名字相同,参数也相同但返回值类型不同时不构成重载。
方法递归
一个方法在执行过程中调用自身,就称为“递归”。
递归要注意的三点:
1.调用自己的本身;
2.要有一个趋近于终止的条件;
3.推导出递归的公式。
使用递归解决问题相当的方便。但是并不是所有问题都适合使用递归的方法解决,例如:求第n个斐波那契数,这一问题,使用递归解决时代码如下:

public class Test{
    public static int fib(int n){
        if(n==1||n==2){
            return 1;
        }
        return fib(n-1)+fib(n-2);
    }
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int ret=fib(n);
        System.out.println(ret);
    }

虽然看起来代码写的比较简单,但是在实际调试过程中会发现,n越大,调试的越慢,额外的计算代价过大。举个例子:假如你要求第十个斐波那契数,由于 fib(10)=fib(9)+fib(8),这样一来又得求第九个和第八个数,又因为fib(9)=fib(8)+fib(7),fib(8)=fib(7)+fib(6),如此递归下去进行计算,会发现重复计算了好多次相同的斐波那契数,因此使用递归的方法反而效率变低了。现在看看使用非递归的代码(用一个简单的迭代就可以了):## 标题

public class Test{
    public static int fib(int n){
        int f1=1;
        int f2=1;
        int f3=1;
        for(int i=3;i<=n;i++){
            f3=f1+f2;
            f1=f2;
            f2=f3;
        }
        return f3;
    }
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int ret=fib(n);
        System.out.println(ret);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值