一起学技术——java的方法定义及递归的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、什么是方法?
    • 方法(函数)就是一个代码片段,类似c语言中的函数
    • 方法的定义语法
    • 方法的调用的执行过程
    • 实参和形参的关系
  • 二、方法的重载(overload)
  • 三、方法的递归


提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是方法?

方法(函数)就是一个代码片段,类似c语言中的函数

  • 是能够模块化的组织代码
  • 做到代码被重复使用,相同的代码在多个位置使用
  • 让代码更好的被理解
  • 直接调用已有的方法,不需要重新写代码

方法的定义语法

public static 方法返回值 方法名称(参数的类型 形参)
{
方法体代码;
}
return语句;

注:
1.方法定义时,每个参数要指定类型
2.方法定义时,可以没有返回值,如果无返回值,则应该将类型定义为void类型
3.和c语言不同,方法写在调用前或者调用后都行(C语言需要写在调用之前,否则需要声明)
4.定义方法的参数被称为“形参”,方法调用时传递的参数称为实参
5.方法定义时参数可以没有,但是每个参数要指定类型
6.java中没有函数声明这样的概念(只有方法和参数,没有具体实现这个是不可以的)

如:定义一个方法求比较两个数

public class cla {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double a = scanner.nextDouble();
        double b = scanner.nextDouble();
        double max = Max2(a, b);//方法的调用
        System.out.println(max);
    }
    
	//这是一个方法
    public static double Max2(double a, double b) {
        double max2;
        if (a > b) {
            max2 = a;
        } else {
            max2 = b;
        }
        return max2;
    }
}

结果
在这里插入图片描述

方法的调用的执行过程

  • 定义方法时方法不会被执行,只有调用的时候方法才会被执行
  • 当方法调用时,会将实参的值传递给形参
  • 实参传递给形参开始执行方法里的代码
  • 当方法执行完后,遇到return会回到方法调用的位置,然后继续执行之后的代码
  • 一个方法可以多次被调用,不调用就不会执行

一起学技术——java的方法定义及递归的使用_第1张图片

实参和形参的关系

在java中,方法的参数传递只有值传递,所谓的值传递就是把实参的值拷贝一份拿给形参,对实参没有任何影响。
一起学技术——java的方法定义及递归的使用_第2张图片
所以改变形参的数据对实参没有影响

在方法外交换两个局部变量的场景在Java中压根就不存在,这个问题解决需要引入引用数据类型(数组或对象)去解决
一起学技术——java的方法定义及递归的使用_第3张图片

二、方法的重载(overload)

  • 方法重载发生在“在同一个类中”,定义了若干个方法名称相同,参数列表不同(参数的类型或者个数不同)的一组方法中,与返回值无关
  • 如果没有重载,我们要实现不同类型的数相加,需要定义多个函数名称不同的函数,这样对于使用来说非常麻烦,于是重载的作用就体现了出来
  • 有了重载,要实现两个函数相加只需要定义一组add的重载函数就可以实现,

一起学技术——java的方法定义及递归的使用_第4张图片

三、方法的递归

什么是递归?

  • 所谓的方法递归就是在一个方法执行的内部,自己调用了子的过程

递归分为两个子过程

  • 递过程:函数不断调用自身,直到走到函数的终止条件,第一阶段结结束
  • 函数不断返回的过程称为归过程

什么场景下能使用递归

  • 一个大问题可以拆分成若干个子问题的解
  • 拆分后的子问题和原问题除了数据规模不同,解决思路完全相同
  • 必须存在递归终止的条件(不会无限拆分下去,一定能走到根儿)

如何写出递归代码呢?

  • 在写递归函数时,千万不要纠结这个函数内部到底怎么实现,而是注意这个方法的语义(这个函数到底有什么功能),可以假设这个方法别人已经写好了,你只是调用这个方法而已
  • 写出递归代码其实 = 终止条件 + 不借助任何方法就能实现的步骤 + 剩下问题利用这个方法去解决
  • 终止条件?所谓终止条件就是不借助任何函数就能直接知道答案的值

例:写一个方法,这个方法输入一个非负整数,返回组成这个数的数字之和 如1729 = 1+7+2+9 =19

一起学技术——java的方法定义及递归的使用_第5张图片

具体递归的一个过程

  • 当方法没有遇到返回时,程序会卡在调用出,直到最后一个开始返回
    一起学技术——java的方法定义及递归的使用_第6张图片

你可能感兴趣的:(java)