方法的有关知识(含递归)

方法使用

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

方法(代码片段)定义:

public class Method{
// 方法的定义public static int add(int x, int y) {return x + y;}
}

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

方法体代码;

[return 返回值];

}

方法调用

需要开辟内存--方法调用结束 内存销毁

过程:调用方法--传递参数--找到方法地址--执行被调用方法的方法体--被调方法结束返回--回到主调方法继续往下执行

定义方法不执行方法代码只有调用才执行;一个方法可调用多次

方法传参

形参:函数中自变量,用来保存函数在调用传递的值

实参:拷贝到形参中,形参和实参本质是两个实体

方法重载

方法名相同,但是参数列表不同(参数的个数、参数的类型、类型的次序),与返回值类型是否相同无关

在方法名相同的情况下,这三个只要有一个不同,那么这个方法就会被重载;

两个方法如果仅仅只是因为返回值类型不同,是不能构成重载的(编译出错)

方法签名

在同一个作用域中不能定义两个相同名称的标识符。(方法中不能定义两个名字一样的变量)

类中可以定义方法名相同的方法--方法签名即:经过编译器编译修改过之后方法最终的名字

具体方式为:方法全路径名+参数列表+返回值类型,构成方法完整的名字。

使用JDK自带的javap反汇编工具查看,具体操作如下:

  1. 先对工程进行编译生成.class字节码文件
  2. 在控制台中进入到要查看的.class所在的目录
  3. 输入:javap -v 字节码文件名字即可

 方法签名中的一些特殊符号说明

[--引用类型,以L开头,以;结尾,中间是引用类型的全类名

递归

定义

一个方法在执行过程中 调用自身 , 就称为 " 递归 ".
递归相当于数学上的 " 数学归纳法 ", 有一个起始条件 , 然后有一个递推公式

必要条件

1. 将原问题划分成其子问题,注意:子问题必须要与原问题的 解法相同
2. 递归出口

调用栈

方法调用的时候, 会有一个 "栈" 这样的内存空间 描述当前的调用关系 . 称为调用栈.
每一次的方法调用就称为一个 " 栈帧 ", 每个栈帧中包含了这次调用的参数是哪些, 返回到哪里继续执行等信息
运用递归求斐波那契数
public class test {public static void main(String[] args) {System.out.println(fib2(3));System.out.println(fib2(6));}
public static int fib2(int n){if(n==1||n==2){return 1;}int f1=1;int f2=1;int f3=1;for(int i=3;i<=n;i++){f3=f1+f2;f1=f2;f2=f3;}return f3;
}

可以使用循环来减少递归中的数据冗余

public static int fib(int n) {int last2 = 1;int last1 = 1;int cur = 0;for (int i = 3; i <= n; i++) {cur = last1 + last2;last2 = last1;last1 = cur;}return cur;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/24590.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

公链开发与公链生态开发:构建未来区块链世界的基石

在区块链技术日新月异的今天&#xff0c;公链&#xff08;Public Blockchain&#xff09;作为去中心化网络的核心&#xff0c;不仅为数字资产交易提供了坚实的基础&#xff0c;更推动了智能合约、去中心化应用&#xff08;DApps&#xff09;等生态系统的蓬勃发展。公链开发与公…

python+django+transformers模型:实现商品推荐功能(集成nacos配置,数据端mongo)

一、环境安装准备 #创建 虚拟运行环境python -m venv myicrplatenv#刷新source myicrplatenv/bin/activate#python Django 集成nacospip install nacos-sdk-python#安装 Djangopip3 install Django5.1#安装 pymysql settings.py 里面需要 # 强制用pymysql替代默认的MySQLdb pym…

vue3-07模拟vue3的响应式原理Proxy (代理对象)与Reflect (反射对象)

1.实现原理 通过Proxy (代理对象): 拦截对象中任意属性的变化,包括: 性值的读写、性的添加、属性的删除。通过Reflect (反射对象): 对源对象的属性进行操作。 new Proxy(data,{ // 拦截读取属性值 get (target, prop) ( return Reflect.get(target, prop) // 拦截设置属性值或…

微信小程序源码逆向 MacOS

前言 日常工作中经常会遇到对小程序的渗透测试&#xff0c;微信小程序的源码是保存在用户客户端本地&#xff0c;在渗透的过程中我们需要提取小程序的源码进行问题分析&#xff0c;本篇介绍如何在苹果电脑 MacOS 系统上提取微信小程序的源码。 0x01 微信小程序提取 在苹果电…

Python 3.12安装流程

一、下载Python安装包 访问Python官网&#xff1a;Python.org 点击 Download Python 3.12按钮&#xff08;自动识别您的操作系统&#xff09;。 二、运行安装程序 找到下载的安装文件&#xff08;如 python-3.12.3-amd64.exe&#xff09;&#xff0c;双击运行。 勾选 Add py…

【2025.2.25更新】wordpress免费AI插件,文章内容、图片自动生成、视频自动生成、网站AI客服、批量采集文章,内置deepseek联网满血版

wordpress免费AI插件&#xff0c;文章内容、文章图片、长尾关键词、视频自动生成、网站AI客服、批量采集文章&#xff0c;插件已接入腾讯云大模型知识引擎xDeepSeek&#xff0c;基于腾讯云大模型知识引擎xDeepSeek可联网满血版&#xff0c;插件可实现文章生成、长尾关键词生成、…

apache-maven-3.2.1

MAVEN_HOME D:\apache-maven-3.2.1 PATH D:\apache-maven-3.2.1\bin cmd mvn -v <localRepository>d:\localRepository</localRepository> setting.xml <?xml version"1.0" encoding"UTF-8"?><!-- Licensed to the Apache Soft…

10、C++面向对象三大特性【高频】

面向对象编程 具有 封装、继承、多态 三个主要特性 封装&#xff1a; 将属性和行为作为一个整体、一个类&#xff0c;来表现生活中的事物 将属性和行为加以权限控制&#xff0c;包括public 公共权限、protected 保护权限、private 私有权限这三种&#xff0c;从而让 自己的属性…

探索浮点数在内存中的存储(附带快速计算补码转十进制)

目录 一、浮点数在内存中的存储 1、常见的浮点数&#xff1a; 2、浮点数存储规则&#xff1a; 3、内存中无法精确存储&#xff1a; 4、移码与指数位E&#xff1a; 5、指数E的三种情况&#xff1a; 二、快速计算补码转十进制 1、第一种方法讨论&#xff1a; 2、第二种方…

Windows版FFmpeg使用及B站视频下载示例python源码

Windows版FFmpeg使用及B站视频下载示例python源码 FFmpeg介绍和下载 FFmpeg 是一个功能强大、灵活且广泛使用的多媒体处理工具&#xff0c;无论是在专业领域还是日常使用中&#xff0c;都能满足各种多媒体处理需求。FFmpeg 是一个开源项目&#xff0c;遵循 LGPL 或 GPL 许可。…

最新版 (持续更新)docker 加速源 linux yum 源

收藏两个网站&#xff0c;配置docker 加速源与yum 源。 docker 加速源链接 Docker/DockerHub 国内镜像源/加速列表&#xff08;2月25日更新-长期维护&#xff09;-腾讯云开发者社区-腾讯云https://cloud.tencent.com/developer/article/2485043 yum 源 CentOS7停服后yum源配置…

计算机三级网络技术备考(2)

#第二章关于中小型网络系统总体规划与设计方法 考点一&#xff1a;网络总体设计 考点二网络关键设备选型 考点三服务器的选型 #第三章&#xff1a;IP地址规划设计技术 考点1&#xff1a;二进制和十进制转换 小练习记得做昂 考点2&#xff1a;IP地址分类及规划方法 A类&#x…

【代码软件 | vs2019】vs2019+Qt5.12.12开发环境 的下载、安装详细介绍

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

【DeepSeek探索篇(四)】高效学习与工作,从搭建DeepSeek个人知识库开始!

高效学习与工作&#xff0c;从搭建DeepSeek个人知识库开始&#xff01; 打工人和学习者必看&#xff01;你为何急需一个个人知识库&#xff1f;搭建个人知识库需要用到哪些技术呢&#xff1f;一、模型微调与RAG技术简介二、RAG技术原理剖析 揭秘Embedding&#xff1a;为何它是D…

AI数字人系统源码部署解决方案!!!

一、开场白 如今&#xff0c;科技的步伐越来越快&#xff0c;数字人已经从想象中走进了我们的现实生活。它们在娱乐、教育、医疗等多个领域大放异彩。了解数字人的代码开发技术&#xff0c;能让我们更好地理解其工作原理&#xff0c;为那些想在这一领域大展拳脚或者用数字人技…

【网络】HTTPS协议原理

文章目录 1. HTTPS 是什么2. 常见的加密方式3. 数据摘要4. 加密方案测试4.1 只是用对称加密4.2 只使用非对称加密4.3 双方都使用非对称加密4.4 对称 非对称 5. 证书5.1 数据签名5.2 CA 证书5.3 方案五 非对称加密 对称加密 证书认证 1. HTTPS 是什么 HTTP 协议内容都是按照…

计算机网络————(三)

前文二 前文一 Websocket协议 是一种存在TCP协议之上的协议 当客户端需要了解服务器是否更新就需要不断给客户端发送请求询问是否更新&#xff0c;这行会造成服务端压力很大 而Websocket相当于服务器一旦更新了就会给客户端发送消息表明自己更新了&#xff0c;类似客户端订阅…

Blueprint —— Events

目录 一&#xff0c;Event Level Reset 二&#xff0c;Event Actor Begin Overlap 三&#xff0c;Event Actor End Overlap 四&#xff0c;Event Hit 五&#xff0c;Event Any Damage 六&#xff0c;Event Point Damage 七&#xff0c;Event Radial Damage 八&#xff…

博云先进算力管理平台AIOS已上线全尺寸DeepSeek系列模型

在异构基础设施上轻松运行全尺寸DeepSeek DeepSeek于2024年12月发布了包括 DeepSeek V3、R1、Janus Pro等多版本模型。V3版本适用于通用型自然语言处理任务&#xff0c;R1专注于复杂推理任务&#xff0c;而 Janus Pro 则擅长多模态理解与生成&#xff0c;可满足企业不同 AI 场…

如何搭建起成熟的团队知识文档管理系统

搭建一个成熟的团队知识文档管理系统&#xff0c;对于提升团队的工作效率、促进信息共享以及保障知识资产的安全性都至关重要。**要实现这一目标&#xff0c;首先需要明确知识管理的目标和需求&#xff0c;其次选择合适的知识管理工具&#xff0c;最后制定有效的管理流程和权限…