方法的调用、方法重载及方法递归

1.方法的基本用法

1.1什么是方法?

方法就是一个代码片段. 类似于 C 语言中的 "函数"

1.2方法的定义及语法

方法定义:

public static 方法返回值类型 方法名称([参数类型] 形参){

      方法体;

      return 返回值;

}

return的作用:①结束当前方法 ②带着返回值交给调用处

方法定义时,参数可以没有,若有参数,每个参数需要指定类型;

返回值可以没有,返回类型为void;

方法的定义必须在类之中, 代码书写在调用位置的上方或者下方均可.

1.3方法的调用

返回值变量=方法名称 (实参) 

方法示例:

public class Homework2_1 {
    public static void main(String[] args) {
        int sum=0;
        for (int n= 1; n<=6; n++) {
            int tempRet=factor(n);       //调用方法
            sum=tempRet;
        }
        System.out.println("N的阶乘是"+sum);

    }
    public static int factor(int N) {       //定义一个方法factor
        int ret = 1;
        for (int i = 1; i<= N; i++) {
            ret *= i;
        }
        return ret;
    }
}

 定义了一个方法求阶乘,并且调用该方法。

1.4形参和实参的关系

实参:真实传递给方法的参数,如 常量、变量、表达式等。调用方法时,实参必须有确定的值,以便传递给形参。

形参:方法名后括号中的变量,只有在方法被调用的过程中才实化(分配内存单元)。形参调用完成后被销毁,形参只在方法中有效。

当实参传递给形参时,形参实质上是实参的一份临时拷贝,对形参的改变是不会影响实参的。

public class Test1 {
    public static void main(String[] args) {
        int a=10;
        int b=21;
        swap(a,b);
        System.out.println("调用方法后:");
        System.out.println("a="+a+",b="+b);  //此处的a,b为实参
    }
    public static void swap(int a,int b){   //此处的a,b为形参
        int temp=0;
        temp=a;
        a=b;
        b=temp;
        System.out.println("被调用的方法中:");
        System.out.println("a="+a+",b="+b);
    }
}

 输出结果如下:

 可见,调用swap方法后,并没有对被调用的实参进行值交换。若要完成值交换,需要引入引用数据类型(数组或对象)。

2.方法重载

发生在同一个类中,方法名称相同,但参数列表(参数个数、参数类型)不同。方法重载与返回值类型,参数名称无关。

public class Test {
    public static void main(String[] args) {
        double a=10.3;
        double b=2.4;
        int c=5;
      double ret= Max3(a,b,c);
      System.out.println(ret);

    }
    public static int Max1(int a,int b){
      
        return a>b?a:b;
    }
    public static double Max2(double a,double b){
        return a>b?a:b;
    }
    public static double Max3(double a,double b,int c){
        double temp1=Max2(a,b);
        return Max2(temp1,c);
    }
}

3.方法递归 

3.1 什么是方法递归

在一个方法执行的内部,自己调用自己的过程

3.2 使用场景

(1)一个大问题可以拆分成若干个同类型的子问题

(2)拆分后的子问题和原问题除了规模不同,解决思路完全相同

(3)必须存在递归的终止条件

3.3 如何写递归代码

注意方法的语义(函数的功能),可以假设该方法已经写好了(不要纠结内部如何实现),咱们只是调用它。

终止条件+不借助任何方法就可以实现的步骤+剩下的部分用这个方法解决。

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("输入要求的斐波那契数:");
        int n= scanner.nextInt();
        System.out.println("第"+n+"个要求的斐波那契数是:"+fibo(n));
    }
    public static int fibo(int n){   //定义fibo方法
        if(n==1||n==2){             //终止条件
            return 1;
        }
        return fibo(n-1)+fibo(n-2);   //调用fibo 方法
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值