深入理解 Java 方法重载与递归应用
Java 方法重载
方法重载 允许在同一个类中定义多个具有相同名称的方法,但 参数列表 必须不同。
语法:
returnType methodName(parameter1, parameter2, ..., parameterN) {
// 方法体
}
示例:
public class Main {
// 重载 add 方法,支持 int 和 double 类型参数
static int add(int x, int y) {
return x + y;
}
static double add(double x, double y) {
return x + y;
}
public static void main(String[] args) {
int sum1 = add(10, 20);
double sum2 = add(3.14, 1.618);
System.out.println("int: " + sum1);
System.out.println("double: " + sum2);
}
}
输出:
int: 30
double: 4.758
解释:
- 该示例中定义了两个
add方法:- 一个接受两个
int型参数并返回int型结果。 - 另一个接受两个
double型参数并返回double型结果。
- 一个接受两个
- 在
main方法中,我们分别调用了两个add方法并打印了结果。
重载的好处:
- 可以使代码更加简洁易读。
- 可以提高代码的可重用性。
重载的注意事项:
- 方法的返回值类型可以不同。
- 方法的访问权限不能不同。
- 方法不能声明为
static或final。
总结
- 方法重载允许在同一个类中定义多个具有相同名称的方法,但参数列表必须不同。
- 重载可以使代码更加简洁易读,提高代码的可重用性。
- 重载时需要注意返回值类型、访问权限、static 和 final 修饰符等限制。
Java 递归
递归 是一种让函数调用自身的技术。它提供了一种将复杂问题分解为简单问题的方法,这样更容易解决。
理解递归
递归可能有点难以理解。理解它的最好方法是通过实验来了解它是如何工作的。
递归示例
将两个数字相加很容易,但将一系列数字相加更复杂。在下面的示例中,使用递归通过将其分解为添加两个数字的简单任务来将一系列数字相加:
public class Main {
public static void main(String[] args) {
int result = sum(10);
System.out.println(result);
}
public static int sum(int k) {
if (k > 0) {
return k + sum(k - 1);
} else {
return 0;
}
}
}
示例解释
- 当调用
sum()函数时,它将参数k添加到所有小于k的数字的和并返回结果。 - 当
k变为 0 时,函数只返回 0。 - 运行时,程序按照以下步骤执行:
10 + sum(9)
10 + ( 9 + sum(8) )
10 + ( 9 + ( 8 + sum(7) ) )
...
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + sum(0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0
- 由于当
k为 0 时函数不再调用自身,程序在此停止并返回结果。
停止条件
就像循环可能陷入无限循环问题一样,递归函数可能陷入无限递归问题。无限递归是指函数永远不停止调用自身。每个递归函数都应该有一个 停止条件,即函数停止调用自身的条件。
停止条件示例
在前面的示例中,停止条件是参数 k 变为 0 时。
另一个停止条件示例
在这个例子中,函数将在开始和结束之间的一系列数字相加。这个递归函数的停止条件是当 end 不大于 start 时:
public class Main {
public static void main(String[] args) {
int result = sum(5, 10);
System.out.println(result);
}
public static int sum(int start, int end) {
if (end > start) {
return end + sum(start, end - 1);
} else {
return end;
}
}
}
递归的注意事项
- 开发人员在使用递归时应非常小心,因为很容易陷入编写永远不会终止的函数或使用大量内存或处理器资源的函数。
- 然而,正确编写时,递归可以是一种非常高效和数学上优雅的编程方法。
递归的应用场景
递归可以用于解决许多不同类型的编程问题,例如:
- 计算阶乘
- 计算斐波那契数列
- 遍历树形结构
- 解析数学表达式
- 生成各种图形
学习递归
- 递归是一个重要的编程概念,学习它可以帮助你解决更复杂的问题。
- 有许多资源可以帮助你学习递归,例如书籍、网站和在线教程。
- 通过练习,你将能够更好地理
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注
深入理解 Java 方法重载与递归应用的更多相关文章
- java方法——重载2
什么是Java方法重载 方法重载的定义 1 对于同一个类,如果这个类里面有两个或者多个重名的方法,但是方法的参数个数.类型.顺序至少有一个不一样,这时候局构成方法重载. END 方法重载示例 1 pu ...
- Java 方法重载 方法重写
方法重载规则 参数个数不同 参数个数相同,但参数列表中对应的某个参数的类型不一样 方法的返回类型和参数名称不参与重载 "编译期绑定",,因为未产生对象,只看参数.引用类型绑定方法 ...
- Java 方法重载和多态
先来看看什么是方法重载? 方法重载的要求是:方法名相同,参数列表不同(不同的参数类型或者参数顺序或者参数个数).至于方法的其他部分,如方法返回值类型和修饰符,与方法重载没有任何关系.最好加上@Over ...
- 《Java基础知识》Java方法重载和重写
重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说子类 ...
- Java方法重载
Java允许一个类中定义多个方法,只要参数列表不同就行了.如果同一个类中包含了两个或者两个以上的方法的方法名相同,但形参列表不同,则被称为方法重载. /* 参数类型不同的重载 */ public cl ...
- Java 方法重载,方法重写(覆盖),继承等细节注意
1.方法重载(method overload)的具体规范 如果有两个方法的方法名相同,但参数不一致,那么可以说一个方法是另一个方法的重载. 一.方法名一定要相同. 二.方法的参数表必须不同,包括参数的 ...
- java方法重载和重写
1.java的方法重载和重写,表示两种不同的类型.this关键字,出现在类的构造方法中,代表使用该构造方法所创建的对象.,this可以出现在实例方法中核构造方法中.但是不能出现在类方法中.实例方法只能 ...
- [Java学习] Java方法重载
在Java中,同一个类中的多个方法可以有相同的名字,只要它们的参数列表不同就可以,这被称为方法重载(method overloading). 参数列表又叫参数签名,包括参数的类型.参数的个数和参数的顺 ...
- 【知了堂学习笔记】java 方法重载与重写的归纳
方法重载:Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同.调用方法时通过传递给它们的不同个数和类型的参数来决定 ...
- java——方法重载与重写、构造方法、this关键字、static关键字、strictfp关键字、类的导入
Java SE5新增加@Override注解,它并不是关键字,但是可以把它当作关键字使用.当你想要覆写(重写)某个方法时,可以选择添加这个注解,在你不留心重载而并非覆写了该方法时,编译器就会生成一条错 ...
随机推荐
- urllib模块常用方法
import urllib.parse ## urlparse() 对url进行解析,并对url按照一定格式进行拆分,返回一个包含6个字符串的元组(协议,位置,路径,参数,查询,判断), 可以将获得的 ...
- git 多系统复用账号
重装系统前请备份~/.ssh下的公钥私钥文件,重装系统后,请使用以下方法复用好之前的key 将备份好的key copy至~/.ssh下 将私钥id_rsa的文件属性改为600:sudo chmod 6 ...
- 【Azure APIM】解决APIM Self-hosted Gateway在AKS上,最开始访问时候遇见的404问题
问题描述 根据APIM官方文档,创建Self-hosted 网关在AKS中( 使用 YAML 将自承载网关部署到 Kubernetes :https://docs.azure.cn/zh-cn/api ...
- Glide源码解析三(注册组件)
转载请标明出处,维权必究: https://www.cnblogs.com/tangZH/p/12900387.html Glide源码解析一,初始化 Glide源码解析二-into方法 Glide源 ...
- Python实现ARP攻击
目录 概述 ARP协议 IP转MAC 结构 ARP扫描 开始欺骗 中间人 其他 ARP老化 防御 windows linux 概述 高中的时候,学校有一个商店,会放开WIFI给偷偷带手机去学校的我们使 ...
- uniapp+定时云函数保活replit
在replit中运行起来后,如果没有请求,则会在5分钟后关机,所以需要一个进程来定时访问一下,以达到保活的目的.replit是什么?我的理解是:它是一个在线的IDE,前端项目可以直接跑起来,且repl ...
- Jmeter如何分布式执行脚本?
Jmeter分布式执行原理: JMeter分布式执行时,选择其中一台作为调度机(master),其他机器作为执行机(slave): master会在本地编辑好jmx压测脚本,执行时,master将jm ...
- 四: Mysql用户管理
# 用户与权限管理 MySQL用户可以分为普通用户和root用户, root用户是超级管理员,拥有所有权限,包括创建用户.删除用户和修改用户的密码等管理权限:普通用户只拥有被授予的各种权限. MySQ ...
- linux centos文本编辑模式快速进入末尾最后一行快捷键与跳转首行、行尾和某一行快捷键
前言 使用vim的过程中想要快速移动光标至行首.行尾.第一行.最后一行或者某一行,本文对此简单介绍. 具体操作 1.快速至当前行的行首:home键最简单 (1) Home键: (2) 符号^(要按sh ...
- Metasploitable3 渗透测试
1.信息手机阶段 信息收集经常使用的软件 功能也比较强大的Nmap Nmap nmap -p- -sS -sV -n -v --reason --open -oX demon.xml 192.168. ...