Java中方法的定义、重载、递归

方法(Method)

java的方法对应的就是c语言中的函数。
方法存在的意义:
1.方法是能偶模块化的组织代码(当代码规模比较复杂的时候)。
2.做到代码被重复使用,一份代码可以在多个位置使用。
3.让代码更好理解更简单。
4.直接调用现有开发方法,不必重复造轮子。

方法的定义:

public static 返回值(void/int…等) 方法名(形式参数列表){
方法体;
}

public static:因为当前所有的方法写完之后,会在main方法中调用,main方法是 static的。
返回值:可有可无,看需求,如果有返回值,那么返回值的类型需要和方法的返回值类型相匹配。
形式参数列表:形参=》实参的一份拷贝。
方法体:具体方法的实现。

定义一个方法,返回两个数中的最大值
eg:

public staitc int maxNum(int num1,int num2){
return num1>num2?num1:num2;
}

return代表函数结束,写在return后的代码将不会被执行。

方法的重载

方法的重载就是方法名相同,参数个数和类型不同。
eg:

public class MethondOverload {
    public static int sum(int a, int b) {
        return a + b;
    }
    public static double sum(double a, double b, double c) {
        return a + b + c;
    }
    public static int sum(int a, int b, int c, int d) {
        return a + b + c + d;
    }
}

重载的规则
1.方法名相同。
2.方法的参数不同(参数个数或参数类型)。
方法的返回值表类型不影响重载。

方法的递归

递归:一个方法在执行过程中调用自己本身。
1.要有一个趋近于终止的条件。
2.推导出递归的公式。

eg:求N的阶乘。

    public static  int fac(int n){
        if (n==1){
            return 1;
        }
        return (n*fac(n-1));
    }

public static void main(String[] args) {
    Scanner scanner=new Scanner(System.in);
    int n= scanner.nextInt();
    System.out.println(fac(n));
}
}

函数递归的调用,是在栈上开辟内存的。给这个函数开辟栈帧。
在这里插入图片描述

1.用递归求斐波那契数列项数

public static int fabonaci(int n) {
        if (n == 1 || n == 2) {
            return n = 1;
        }
        return fabonaci(n - 1) + fabonaci(n - 2);
    }

用递归写斐波那契数列是一个多路递归,类似于二叉树,会做很多重复的递归,浪费时间。
一般情况下斐波那契数列不建议用递归求。上图可以看出用递归方法,出现了2次F1,3次F2,2次F3,如果要求更高项数,会出现更多的重复项递归,会使运算的时间大大浪费。

2.用循环求斐波那契数列项数

public static int fabonaci2(int a) {
    int f1 = 1;
    int f2 = 1;
    int f3 = 0;
    //如果a是1或0的时候,这里进不了循环就会有问题。
    for (int i = 3; i < a; i++) {
        f3 = f1 + f2;
        f1 = f2;
        f2 = f3;
    }
    return f3;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值