• 【Java初阶】---方法与递归


    ​活动地址:CSDN21天学习挑战赛

    ced485cbb11e458d81a746890b32cf3f.gif

     🎈🎈 作者 whispar
    🎈🎈专栏 :Java由浅入深

    ✨矢志不渝✨ 

    7abc9c8906564477a6679bb15d368e37.gif


    目录

    1.方法的创建与使用

    2.实参与形参的关系

    3.方法的重载

    4.递归的使用


    1.方法的创建与使用

    1.    public static void main(String[] args) {
    2.    //方法的使用
    3.       int a = add(3,8);
    4.       System.out.println(a);
    5.   }
    6.    // 方法的定义
    7.    public static int add(int x, int y) {
    8.        return x + y;
    9.   }
    • 如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成void

    • 方法名字:采用小驼峰命名

    • 参数列表:如方法没有参数,()中不写,如有参数,需指定参数类型,多个参数之间使用逗号隔开

    • 方法体:方法内部要执行的语句

    • 方法需要写在类中

    2.实参与形参的关系

    1. public static int getSum(int N){ // N是形参
    2.       return (1+N)*N / 2;
    3. }
    4.   getSum(10); // 10是实参,在方法调用时,形参N用来保存10
    5.   getSum(100); // 100是实参,在方法调用时,形参N用来保存100

    在Java中,实参的值永远都是拷贝到形参中,形参和实参本质是两个实体

    示例:

    1. public class Main{
    2.    public static void swap(int x, int y) {
    3.        int tmp = x;
    4.        x = y;
    5.        y = tmp;
    6.        System.out.println("swap: x = " + x + " y = " + y);
    7.   }
    8.    public static void main(String[] args) {
    9.        int a =10; //局部变量-->栈
    10.        int b =20;
    11.        System.out.println(a+" "+b);
    12.        swap(a,b);
    13.        System.out.println(a+" "+b);
    14.   }
    15. }

    a和b是main方法中的两个变量,其空间在main方法的栈(一块特殊的内存空间)中,而形参x和y是swap方法中的两个变量,x和y的空间在swap方法运行时的栈中,因此:对形参x和y操作不会对实参a和b 产生任何影响。

    如果要真正交换这两个变量,必须把这两个变量放堆上,使用引用类型

    1. public class TestMethod {
    2.     public static void main(String[] args) {
    3.             int[] arr = {10, 20};
    4.             swap(arr);
    5.             System.out.println("arr[0] = " + arr[0] + " arr[1] = " + arr[1]);
    6. }
    7.     public static void swap(int[] arr) {
    8.           int tmp = arr[0];
    9.           arr[0] = arr[1];
    10.           arr[1] = tmp;
    11.   }
    12. }

    3.方法的重载

    1. public class Main{
    2.    public static void main(String[] args) {
    3.        add(1, 2);             // 调用add(int, int)
    4.        add(1.5, 2.5);         // 调用add(double, double)
    5.        add(1.5, 2.5, 3.5);    // 调用add(double, double, double)
    6.   }
    7.    public static int add(int x, int y) {
    8.        return x + y;
    9.   }
    10.    public static double add(double x, double y) {
    11.        return x + y;
    12.   }
    13.    public static double add(double x, double y, double z) {
    14.        return x + y + z;
    15.   }
    16. }

    注意

    重载和重写有什么区别?

    • 方法名必须相同

    • 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)

    • 与返回值类型是否相同无关

    4.递归的使用

    递归的关键有两个:

    (1)递归的结束条件(不写会死循环)

    (2)递归最后一层和其他有关系的层的关系怎样用非递归函数来表达

    比如:斐波纳契数列,当n==1和n==2的时候f(n)=1,这就是递归的终止条件。给了终止条件,计算机才能进行求解子问题并回溯,最终求出f(n)

    模拟实现汉诺塔

    对于 n 个圆盘的汉诺塔问题,移动圆盘的过程是:

    • 将起始柱上的 n-1 个圆盘移动到辅助柱上;

    • 将起始柱上遗留的 1 个圆盘移动到目标柱上;

    • 将辅助柱上的所有圆盘移动到目标柱上。

    1. public class Demo{
    2.    public static void main(String[] args) {
    3.        hanio(1,'A','B','C');
    4.        System.out.println();
    5.        hanio(2,'A','B','C');
    6.        System.out.println();
    7.        hanio(3,'A','B','C');
    8.   }
    9.    public static void hanio(int n,char pos1,char pos2,char pos3) {
    10.        if(n == 1) {
    11.            move(pos1,pos3);
    12.            return;
    13.       }
    14.        hanio(n-1,pos1,pos3,pos2);
    15.        move(pos1,pos3);
    16.        hanio(n-1,pos2,pos1,pos3);
    17.   }
    18.    /**
    19.     *
    20.     * @param pos1 起始位置
    21.     * @param pos2 目标位置
    22.     */
    23.    public static void move(char pos1,char pos2) {
    24.        System.out.print (pos1+" -> " + pos2+" ");
    25.   }
    26. }


             💖如果文章对你有帮助,请多多点赞、收藏、评论、关注支持!!💖        

    ced485cbb11e458d81a746890b32cf3f.gif

  • 相关阅读:
    【Kubernetes】K8s笔记(十一):Ingress 集群进出流量总管
    Spring Boot 整合开源 Tess4J库 实现OCR图片文字识别
    如何在Microsoft Visual Studio 中使用Cpp代码调用python代码
    奇舞周刊第507期:通过 View Transition API 在状态之间添加丰富的过渡动画
    jupyter notebook的markdown语法不起作用
    操作系统是干什么的?
    Windows------openvino 2022.1安装步骤
    Hadoop原理与技术——Linus命令行基本操作
    使用dlib,OpenCV和Python进行人脸识别—人眼瞌睡识别
    WordPress丸子小程序问题常见解决方案
  • 原文地址:https://blog.csdn.net/m0_56361048/article/details/126276052