1.递归

2.案例

1.案例一

求出5的阶乘

我们会发现其中存在规律

我们先定义一个带返回值的方法,方便调用者使用

当给的数是1时,1的阶乘还是1,我们就可以直接返回

如果走了else,说明给的数不是1,那么我们就先假设要求的是5的阶乘

根据上图中的规律,我们可以知道求5!就是求5*4!,但是4!又该怎么求?

很简单,调用我们现在写的方法,我们现在写的方法不就是求阶乘的方法吗,那么使用递归调用就行了

我们不能将参数写死,所以优化代码



.

内存图详解

https://kdocs.cn/l/ctKEOXcEUXZx?linkname=150996947

2.案例二

斐波那契数列

第一个月有一对小兔子,第二个月小兔子长成大兔子,第三个月,根据题意,大兔子可以生一对小兔子,第四个月,大兔子又生了一对小兔子,然后之前的小兔子长成了大兔子

.

不断推导下去,我们会发现一个规律

定义一个方法,用于上图案例,其中参数是月份,第一二月对应的兔子对数都为1,所以直接返回

走了else,说明是第三个月之后

兔子对数是从第三个月开始,前两个月的对数相加



.

3.案例三

根据题意,我们应该反着推。每天都吃一半,然后多吃一个,说明是二分之一,然后再减一

那么,我们就可以知道,前一天的桃子数量是加1再乘2,得出规律

.



.

递归--java进阶day08的更多相关文章

  1. Java进阶(三十八)快速排序

    Java进阶(三十八)快速排序 前言 有没有既不浪费空间又可以快一点的排序算法呢?那就是"快速排序"啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对"6 1 2 7 ...

  2. Java进阶之路

    Java进阶之路——从初级程序员到架构师,从小工到专家. 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序 ...

  3. Java进阶5 面向对象的陷阱

    Java进阶5 面向对象的陷阱 20131103 Java是一门纯粹面向对象的编程语言,Java面向对象是基础,而且面向对象的基本语法非常多,非常的细,需要程序员经过长时间的学习才可以掌握.本章重点介 ...

  4. Java 进阶 hello world! - 中级程序员之路

    Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...

  5. Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式

    原创文章,同步发自作者个人博客,http://www.jasongj.com/java/nio_reactor/ Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请 ...

  6. Java线程间通信方式剖析——Java进阶(四)

    原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...

  7. Java进阶(三)多线程开发关键技术

    原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...

  8. 当我们说线程安全时,到底在说什么——Java进阶系列(二)

    原创文章,同步发自作者个人博客,转载请以超链接形式在文章开头处注明出处http://www.jasongj.com/java/thread_safe/ 多线程编程中的三个核心概念 原子性 这一点,跟数 ...

  9. Java进阶03 IO基础

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/11/3000905.html 作者:Vamei 出处:http://www.cnblogs.com ...

  10. Java进阶01 String类

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/08/3000914.html 作者:Vamei 出处:http://www.cnblogs.com ...

随机推荐

  1. 函数 | Go语言

    函数 不支持命名参数与默认值 可变参数 求多个int的和 func IntSum(x ...int) { sum := 0 for _, v := range x { sum += v } retur ...

  2. 记录vue和element-ui导出表格到excell

    1.安装插件 npm install 'file-saver' npm install 'xlsx' 2.引入插件 import FileSaver from 'file-saver' import ...

  3. xxl-job安装

    ---------------------------------------------------------------------------------------------------- ...

  4. 微服务实战系列(十)-网关高可用之中间件Keepalived-copy

    1.场景描述 因为要做网关的高可用,用到了keepalived+nginx,来保证nginx的高可用,如下图: 安装了keepavlived,走了一些弯路,记录下吧,nginx的安装就不多说了,博客已 ...

  5. w3cschool-spring详解

    参考地址 https://www.w3cschool.cn/wkspring/dcu91icn.html Spring 体系结构 2021-11-03 18:18 更新 体系结构 Spring 有可能 ...

  6. AVX512

    最近接触到SIMD编码,就不可避免的查到了AVX指令集,两者有什么关系呢,了解一下? 问:AVX是什么? 答:是一套指令集 下面具体看: AVX 以下内容主要转载自:AVX指令集是什么?它的应用又有哪 ...

  7. 图解ArrayList源码

    初始化数组长度为空时, 懒加载 add方法 初始无参构造器 第一次添加 public boolean add(E e) {    // 确定容量 动态扩容 size 初始 0    ensureCap ...

  8. android studio编译flutter项目

    1创建flutter项目:如下图 2选择 flutter application 3 出现flutter SDK没有发现:但是自己又是安装了的 如果,忘记自己flutter安装在哪里的同学. 可以先找 ...

  9. CPU算力如何计算

    本文分享自天翼云开发者社区<CPU算力如何计算>,作者:l****n 什么是算力 随着国家大力发展数字基础设施,算力的提升和普惠变得越来越重要,它注定会在人们的视线中占据很重要的一席.那么 ...

  10. ubuntu通过tar包安装mysql5.7.21

    作者:zuoguohui 一.场景:最近想搞mysql主从复制,需要在两台服务器上安装mysql,之前有一台已经装好了mysql5.7.21,于是在另外一台上也装mysql5.7.21,安装过程中碰到 ...