方法的使用及方法递归

本文详细介绍了Java中方法的定义、调用、参数传递、重载以及调试技巧。方法作为代码复用的手段,使得复杂代码结构更易读。方法重载允许在同一类中创建多个同名但参数列表不同的方法。此外,文章还探讨了递归的概念,指出递归适用于将大问题拆解为相似子问题的场景,并提供了递归求阶乘的示例代码。
摘要由CSDN通过智能技术生成


前言


一、方法的使用

1.方法定义:每个方法都表示一种能力或行为

方法类似于C语言
方法就是一个代码片段,为了此代码能够重复使用,我们将此代码抽象为方法
当有循环嵌套和多个分支时,代码的结构变得复杂,不太容易阅读

public static 返回值声明 方法名称(参数类型 参数名...{
 [return 返回值];
}

定义一个方法进行两个整数的叠加
看一个方法到底有没有返回值取决于这个方法的功能

2.方法的调用:通过主方法调用

数据类型 变量 = 方法名称(参数);
若方法没有返回值:使用void 声明返回值类型,且仍然可以使用return;(表示提前结束方法的调用)

在java中没有函数声明的概念。一旦定义了一个方法必须写他的实现。
调用该函数与该函数定义位置无关,可以在方法实现代码之前调用方法。

3.方法的参数传递

java方法的参数传递只有值传递,只是将实参的值复制一份给形参
若想改变原数据,使用引用类型(所有引用类型存的都是地址)
在这里插入图片描述

4.方法的重载

定义:在同一个类中,定义了若干个方法名称相同,参数列表不同(参数类型或个数),与返回值无关,这样的一组方法称为重载方法
在这里插入图片描述

为什么println方法里面可以接受所有类型?
因为println定义了N个重载方法.

思考:请解释方法重载(overload)和方法重写(override)的区别?

5.补充debug:

IDEA debug:当出现程序编译运行都正常,但是运行结果不是预期结果,用到调试。
1.想要暂停的代码旁打断点
在这里插入图片描述
2.按照需求进行
在这里插入图片描述

二、方法递归

概念:一个方法在执行过程中调用自身,是数据结构与算法基础
比如:
回溯法:基于递归
动态规划:解决递归问题
链表天然递归结构

那些场景下可以使用递归解决问题?
1.一个大问题可以拆分成多个子问题的解
2.拆分后的子问题和原问题除了数据规模不一样,他们解决思路完全相同
3.存在递归终止条件。

如何写出递归代码?
一定要注意方法的语义(这个方法能做什么),不要纠结这个递归如何实现
需要思考如何使用这个方法解决问题
不要当作是自己调用自己,认为是调用的别人写好的代码

如何使用递归方法实现求一个数的阶乘?

 public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        int num= scanner.nextInt();
        System.out.println(jieCheng(num)+"  "+factor(num));
    }
    public static int jieCheng(int num){
        int n=1;
        for (int i = 1; i <=num ; i++) {
            n*=i;
        }
        return n;
    }
    //传入一个值就能返回他的阶乘
    public static int factor(int num ){
        //终止条件
        if(num==1){
            return num;
        }
        //拆分问题
        //现在已经知道num但是不知道num-1的结果,因此将num-1交给factor
        return num*factor(num-1);
    }

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值