算法(一)递归

news2024/11/19 19:27:21

文章目录

  • 递归的概念
  • 递归三要素
  • 递归demo
    • 打印100次“hello word”
    • 斐波那契数列

递归的概念

递归算法是一种直接或者间接调用自身函数或者方法的算法。

递归三要素

  • 递归条件结束
    因为递归是循环调用自身,因此就必须要有结束条件,或者就会OOM。

  • 函数的功能
    函数的功能具体式做什么的需要清楚。打印?计算?移动位置?…

  • 函数的等价表达式
    递归公式一般是每次执行之间,或者与个数之间的逻辑关系。

递归demo

打印100次“hello word”

package com.xxliao.algorithms.recursion.demo;

/**
 * @author xxliao
 * @description: 利用递归实现 打印100次 hello word
 * @date 2024/5/29 23:42
 */
public class Demo01 {


    public static void main(String[] args) {
        print("hello word",100);
    }

    /**
     * @description  打印 count 次 message 信息
     * @author  xxliao
     * @date  2024/5/29 23:44
     */
    public static void print(String message,int count) {
        if(count > 0) {// 递归的结束条件
            System.out.println(message); // 函数的功能
            print(message,count-1); //函数的等价关系式
        }
    }
}

输出结果:
在这里插入图片描述

斐波那契数列

package com.xxliao.algorithms.recursion.demo;

/**
 * @author xxliao
 * @description: 利用递归实现如下功能:
 * 斐波那契数列:1、1、2、3、5、8、13、21、34、55.....
 * 规律:从第3个数开始,每个数等于前面两个数的和
 * 递归分析:
 * 函数的功能:返回n的前两个数的和
 * 递归结束条件:从第三个数开始,n<=2
 * 函数的等价关系式:fun(n)=fun(n-1)+fun(n-2)
 * @date 2024/5/29 23:47
 */

public class Demo02 {

    public static void main(String[] args) {
        System.out.println(fun(9));
    }

    //用于存储每次的计算结果
    static int[] sub=new int[10];
    /**
     * @description  斐波那契数列 实现,
     * @author  xxliao
     * @date  2024/5/29 23:49
     */
    public static int fun(int n) {
        if(n==1 || n==2)
            return 1;
        if(sub[n]==0){
            sub[n]=fun(n-1)+fun(n-2);
        }
        return sub[n];
    }
}

输出结果:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2.8Flowmap的实现

一、Flowmap 是什么 半条命2中水的流动 求生之路2中的水的流动 这种方式原理简单&#xff0c;容易实现&#xff0c;运算量少&#xff0c;如今也还在使用 1.flowmap的实质 Flow map(流向图) &#xff0c;一张记录了2D向量信息的纹理&#xff0c;Flow map上的颜色(通常为RG通道…

Ubuntu部署kafka集群

Apache Kafka (KRaft 集群) Apache Kafka 是一个基于 TCP 的分布式流处理平台&#xff0c;提供高吞吐量、低延迟的消息传递和处理能力&#xff0c;用于构建实时数据管道和流应用程序。其底层通信依赖于 TCP Socket&#xff0c;但 Kafka 封装了许多高级特性&#xff0c;使其更加…

Python使用动态代理的多元应用

Python作为一种功能强大且易于学习的编程语言&#xff0c;在网络编程领域具有广泛的应用。当Python与动态代理技术结合时&#xff0c;便开启了一扇通往更多可能性的大门。以下将深入探讨Python使用动态代理可以实现的多种应用。 首先&#xff0c;Python结合动态代理在网络爬虫…

ETLCloud中如何使用Kettle组件

ETLCloud中如何使用Kettle组件在当今数据驱动的时代&#xff0c;数据处理和分析已成为企业决策的关键。为了更高效地处理海量数据&#xff0c;ETL&#xff08;Extract, Transform, Load&#xff09;工具变得至关重要。而在众多ETL工具中&#xff0c;Kettle作为一款开源、灵活且…

学习笔记——网络参考模型——TCP/IP模型

二、TCP/IP模型 TCP/IP模型(TCP/IP协议栈)&#xff1a;很多个互联网协议的集合&#xff0c;其中以TCP和IP为主&#xff0c;将这些协议的集合称为TCP/IP协议栈。目前使用最多的协议模型。 因为OSI协议栈比较复杂&#xff0c;且TCP和IP两大协议在业界被广泛使用&#xff0c;所以…

C++候捷stl-视频笔记2

深度搜索list list是双向链表&#xff1a;底部实现是环状双向链表 list内部除了存data之外&#xff0c;还要存一个前向指针prev和一个后向指针next list的iterator&#xff0c;当迭代器的时候&#xff0c;是从一个节点走到下一个节点&#xff0c;是通过访问next指针实现的 主要…

arcgis api for javascript点击获取要素错乱的问题

今天帮同事看了一个前端地图点击的问题&#xff1a;点击时总会获取到周边的图元&#xff0c;即使我点击线的周围&#xff0c;也是能获取到的&#xff0c;除非离得特别远。 地图组件用的是arcgis api, 图层类是grahicslayer,要素类型是线。这是添加图元的代码&#xff1a; grap…

AIGC商业案例实操课,发觉其创造和商业的无限可能,Ai技术在行业应用新的商机

课程下载&#xff1a;https://download.csdn.net/download/m0_66047725/89307523 更多资源下载&#xff1a;关注我。 课程内容 1 AI为什么火 。写在课程前面的寄语 。AIGC标志性事件:太空歌剧院 。AI人工智能为什么这么火 &#xff0c;AI人工智能发展历程 。聊天AI会取…

Vxe UI vxe-upload 上传组件,显示进度条的方法

vxe-upload 上传组件 查看官网 https://vxeui.com 显示进度条很简单&#xff0c;需要后台支持进度就可以了&#xff0c;后台实现逻辑具体可以百度&#xff0c;这里只介绍前端逻辑。 上传附件 相关参数说明&#xff0c;具体可以看文档&#xff1a; multiple 是否允许多选 li…

短剧系统源码:构建互动娱乐的新平台

随着数字媒体的兴起&#xff0c;短剧成为了一种新兴的娱乐形式&#xff0c;它以紧凑的叙事和快速的节奏迎合了现代观众的观看习惯。短剧系统源码的开发&#xff0c;为短剧内容的创作、传播和消费提供了一个全面的技术解决方案。本文将探讨短剧系统源码的关键组成部分及其功能。…

基于python flask+pyecharts实现的中药数据可视化大屏,实现基于Apriori算法的药品功效关系的关联规则

背景 在中医药学中&#xff0c;物品与功效之间的关联关系研究是一个非常重要的课题。传统中医药学中&#xff0c;很多药物都具有多种功效&#xff0c;而且不同药物对同一种疾病可能具有不同的疗效。因此&#xff0c;挖掘物品与功效之间的关联关系&#xff0c;可以帮助我们更加…

【第十二节】C++控制台版本贪吃蛇小游戏

目录 一、游戏简介 1.1 游戏概述 1.2 实现功能 1.3 开发环境 二、实现设计 2.1 C类的设计 2.2 项目结构 2.3 代码设计 三、程序运行截图 3.1 游戏界面 3.2 自定义地图 3.3 常规游戏界面 一、游戏简介 1.1 游戏概述 本游戏是一款基于C语言开发的控制台版本贪吃蛇游…

centos7 openssh9.7p 制作rpm包

centos7 openssh9.7p 制作rpm包 下载源码包&#xff1a;通过git开源打包源码准备编译打包环境编译打包上传rpm包到需要更新的服务器,并更新 下载源码包&#xff1a; 一般只用ssh源码就可以了 cd /root wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.7p…

一文了解企业版电子书:从认识到制作

现如今&#xff0c;电子书已经成为企业传播知识、展示品牌、吸引客户的重要工具了。那么&#xff0c;企业版电子书到底是什么&#xff1f;又该如何才能制作出有效的企业版电子书呢&#xff1f;接下来&#xff0c;跟着LookLook同学一起来看看如何从认识到制作一本企业版电子书。…

【计算机网络】——物理层(图文并茂)

物理层 一.物理层概述1.物理层要实现的功能2.物理层接口特征1.机械特性2.电气特性3.功能特性4.过程特性 二.物理层下面的传输媒体1.传输媒体的分类2.导向型传输媒体1.同轴电缆2.双绞线3.光纤 3.非导向型传输媒体1.无线电波2.微波3.红外线4.激光5.可见光 三.传输方式1.串行传输与…

select多个客户端连接,传输数据时只能顺序传输产生原因

1. 场景描述 即A先连接,B后连接&#xff0c;只能先A后B依次输入数据&#xff0c;服务端依次读取数据 这是因为进行循环遍历lfd之后的描述符时&#xff0c;没有判断文件描述符i是否在newset集合中 //cfd发生变化 for(int ilfd1;i<maxfd;i){printf("i num %d\t"…

推理和行动协同(Reason and Act,ReAct)和代码生成

文心一言 当我们将“推理和行动协同&#xff08;Reason and Act&#xff0c;ReAct&#xff09;”的概念应用于代码生成时&#xff0c;我们可以理解为一种指导原则或方法论&#xff0c;它强调了在代码生成过程中进行深思熟虑的决策&#xff08;Reason&#xff09;和有效执行&am…

单实例11.2.0.3迁移到RAC11.2.0.4_使用RMAN 异机恢复

保命法则&#xff1a;先备份再操作&#xff0c;磁盘空间紧张无法备份就让满足&#xff0c;给自己留退路。 场景说明&#xff1a; 1.本文档的环境为同平台、不同版本&#xff08;操作系统版本可以不同&#xff0c;数据库小版本不同&#xff09;&#xff0c;源机器和目标机器部…

黑马微服务实用篇知识梳理

1、微服务治理 1.1服务注册与发现Eureka和Nacos a、nacos和eureka&#xff0c;二者都支持服务注册与发现&#xff0c;但nacos还包括了动态配置管理、服务健康监测、动态路由等功能&#xff0c;是更全面的服务管理平台 b、eureka需要独立部署为服务并运行&#xff0c;需要自行搭…

python根据版本下载外部库的.whl文件、python下载离线whl文件、python查找whl历史版本

文章目录 一、python下载外部库的.whl文件 当遇到pip源中没有对应的包&#xff0c;或者网络波动时&#xff0c;可能出现需要离线安装的方法。这里记录一下下载安装whl文件的操作。 一、python下载外部库的.whl文件 1、在浏览器输入https://pypi.org/进入PYPI官网 2、在弹出的…