day05-递归

以此类推是递归的基本思想。

具体来讲就是把规模大的问题转化为规模小的相似的子问题来解决。在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况。

两个条件:

1.可以通过递归调用来缩小问题规模,且新问题与原问题有着相同的形式。(自身调用)

2.存在一种简单情境,可以使递归在简单情境下退出。(递归出口)

三要素:

1.一定有一种可以退出程序的情况;

2.总是在尝试将一个问题化简到更小的规模

3.父问题与子问题不能有重叠的部分

递归:自已(方法)调用自已

递归调用就是通过栈这种数据结构完成的。整个过程实际上就是一个栈的入栈和出栈问题。然而我们并不需要关心这个栈的实现,这个过程是由系统来完成的。

那么递归中的“就是入栈,递进;”就是出栈,回归。

内存划分

 

* 程序 : 一堆代码的集合,是个可执行文件,但是是一个静态概念,一般保存在硬盘中

 *

 * 进程 : 就是正在执行的可执行文件,是个动态概念,会按照程序的设计,在内存中一步步执行

 *                     运行起来的程序,指的是载入到内存中的可执行文件,这个时候操作系统就会开启一个进程来运行这个内存中的文件对象

 *                     如果我们想关闭某个软件,可以直接结束这个进程即可

 *

 *  java的内存划分和管理

 * 

 *                    Java Runtime Data Area : java 运行时数据区域,我们一般叫JVM内存

 *                    分为 : 静态区/方法区 , VM栈,堆内存,本地栈,程序计数器

 *                           

 *                    程序计数器 : 是一块比较小的内存,,可以看做字节码文件的指示器,分支,循环,跳转等,都需要程序计数器来完成

 *                   

 *                    静态区/方法区 :

 *                            是存放我们的程序文件的,载入内存后的class文件,在静态区存储

 *                            包括方法,静态属性都是在静态区的

 *                            还有运行时常量池

 *  

 *                     VM栈 : 虚拟机栈,一般都叫栈内存

 *                              栈内存,是以栈数据结构为模型,开辟的一块内存空间

 *                                      栈是一种数据结构,先进后出, 比如说 弹夹

 *                              栈构成因素 :

 *                                               栈空间  : 就是以栈数据结构为模块开辟的空间 就叫栈空间

 *                                               栈帧 : 栈空间中的每一个元素,就是一个栈帧 , 比如 弹夹 就是栈空间, 弹夹中的每一个子弹,就是栈帧

 *                                               栈顶元素 : 指最后一个放进去的栈帧,在最上面

 *                                               栈底元素 : 指第一个放进去的栈帧,在最下面

 *                              方法是在栈内存中 执行的

 *                              栈的操作 :

 *                                               压栈 : 就是把栈帧放到栈空间的过程

 *                                               弹栈 : 就是把栈帧从栈空间中弹出的过程

 *           

 *              本地栈 :

 *                              比如hashCode() 方法,前面 有个 native声明,本地,当我们执行这些方法的时候,会在本地栈执行

 *                              对于我们来说就是简单的调用方法,但是对于JVM来说,需要单独的空间来存储C的服务

 *                              结构和VM栈 一模一样

 *

 *                     堆内存 :

 *                                      用来保存对象的,先不管

 *                                      每个对象空间,分为3大类

 *                                               数据部分 : 成员变量xxx

 *                                               头部 : hashCode值

 *                                               类型 : 指向静态区中,创建该对象的这个class文件对象

 *                             

 *

 * java程序执行流程 :

 *

 *            1 编码

 *                              利用开发软件,编辑器进行编码,生成xx.java文件

 *            2 编译

 *                              通过javac命令,把xx.java文件 编译成xx.class文件

 *            3 运行

 *                              通过java命令,运行xx.class文件

 *                              3.1 开启java虚拟机,然后xx.class文件被载入到内存中的静态区

 *                              3.2 jvm自动调用该程序的main方法

 *                              3.3 main方法被调用,会在栈内存中开辟main方法的栈帧,然后把main方法代码复制进去执行

 *                                      如果main中,没有其他方法调用,则顺序执行完后,弹栈退出,jvm关机

 *                                      如果main方法,有其他方法调用,就在栈内存中再开辟一个栈帧,把该方法的代码复制进去执行

 *                                      如果被调用方法中,还有其他方法的调用,以此类推,执行完返回调用处,继续执行

 *                                      一直到main方法都执行结束,弹栈,则JVM关机

 *

 *            程序的加载 :

 *                              静态加载 : 运行程序的时候,会一次性把所有相关的程序都载入

 *                              动态加载 : 运行过程中,用到谁 就去加载谁

 *                     java中采用 动态加载

 *

 * 方法的执行 :

 *            方法在调用的时候,才会在栈内存找那个开辟栈帧

 *            如果方法不调用,则不会再内存空间中划分空间,只保留在静态区

 *

 *            方法调用 : 就等于压栈操作

 *            方法执行完成 : 就等于弹栈操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让火车在天上飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值