算法三——递归

文章出处:极客时间《数据结构和算法之美》-作者:王争。该系列文章是本人的学习笔记。
  递归是非常常用的编程技巧。但是学习过程中往往很容易递出去,却归不回来。

1生活中的例子理解递归

在电影院里面如果你想知道自己在第几排坐着。电影院里面黑,电影票又不在你手里。怎么解决呢?你可以问问前面一个人是第几排,然后加1,就是知道你在第几排。前面那个人可以问他前面的那个人,依次类推,直到第一排那个人,他不用问别人,知道自己是第一排。然后再把这个数一排排传回来,直到你前面的那个人告诉你他在第几排,你的问题就解决了。
 不断缩小问题规模,去求解的过程叫做“递”,把答案一步步传回来的过程叫做“归”。
 这个问题的递推公式是:
 f(n)=f(n−1)+1f(n)=f(n-1)+1f(n)=f(n1)+1
 f(1)=1f(1)=1f(1)=1
 有了递推公式就很容易写代码了。

2 可以用递归解决问题的特点

2.1 一个问题可以分解为几个子问题的解

例如菲波那切数列问题f(n)分解为f(n-1)和f(n-2),两个子问题。上面的例子中f(n)分解为f(n-1),一个子问题。

2.2 分解后的子问题与原问题只有数据规模不同,解题思路是一样的

2.3 要有终止条件

3 编写递归代码的步骤

1 找到递推公式
2 找到终止条件

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

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

相关文章

[Lua]LuaAPI整理

ref :https://blog.csdn.net/ouyangshima/article/details/43339571 LUA和C/C的沟通桥梁——栈 Lua生来就是为了和C交互的,因此使用C扩展Lua或者将Lua嵌入到C当中都是非常流行的做法。要想理解C和Lua的交互方式,首先要回顾一下C语言是如何处理…

[hackinglab][CTF][基础关][2020] hackinglab 基础关 writeup

在线工具:https://www.qqxiuzi.cn/daohang.htm 基础关 1 key在哪里? 知识点:F12查看源代码 步骤:F12 基础关 2 再加密一次你就得到key啦~ 知识点:ROT13 步骤: 基础关 3 猜猜这是经过了多少次加密? 关键字&#xf…

spring学习(5):spring简介

1什么是spring 核心概念 spring框架组成

算法四——哈希

文章出处:极客时间《数据结构和算法之美》-作者:王争。该系列文章是本人的学习笔记。 哈希算法的定义 文章来自极客时间。 参考网页 定义:将任意长度的二进制值串映射为固定长度的二进制值串。映射之后的二进制值串称为哈希值。 符合几点要…

《Java并发编程的艺术》之阻塞队列

阻塞队列是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法: 1) 支持阻塞的插入方法:当队列满时,队列会阻塞执行插入的线程 2) 支持阻塞的移除方法:当队列空时,队列会阻塞执行移除的线程 方法总…

spring学习(6):使用xml方式实现spring基本应用

接着上一节的课程继续学习 在resources文件下建立applicationconText applicationconText.xml文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3…

[burp][CTF]burp intruder爆破出现 Payload set 1: Invalid number settings的解决办法

这是一个软件bug 如果点击start attrack 后出现 Payload set 1: Invalid number settings 的提示&#xff0c;先点hex 后点 decimal 再开始start attrack&#xff0c;需要手动让它刷新。

数据结构五——二叉树

文章出处&#xff1a;极客时间《数据结构和算法之美》-作者&#xff1a;王争。该系列文章是本人的学习笔记。 1 树 1.1 概念 概念&#xff1a;树、根、父节点、子节点、叶子节点。 几个度&#xff1a;高度、深度、层。与实际生活中的这几个概念类比。 高度&#xff1a;从下往…

spring学习(7):加入log4g日志系统

点击show dependencies popup 修改pom.xml文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&quo…

[hackinglab][CTF][脚本关][2020] hackinglab 脚本关 writeup

脚本关 1 key又又找不到了 关键字&#xff1a; 知识点&#xff1a; 步骤:点击提供的链接后&#xff0c;实际发生了两次跳转&#xff0c;key 在第一次跳转的网页中&#xff0c;key is : yougotit_script_now 脚本关 2 快速口算 关键字&#xff1a; 知识点&#xff1a;python基…

plsql 记录型变量

set serveroutput ondeclareemplist emp%rowtype;beginselect * into emplist from emp where empno7839; dbms_output.put_line(emplist.ename||的薪水是||emplist.sal); end; / 转载于:https://www.cnblogs.com/wangchuanfu/p/10963851.html

用递归树求解递归算法时间复杂度

文章内容、图片均来自极客时间。 递归代码复杂度分析起来比较麻烦。一般来说有两种分析方法&#xff1a;递推公式和递归树。 1 递推公式法 归并排序的递推公式是&#xff1a; merge_sort(p…r) merge(merge_sort(p…q), merge_sort(q1…r)) 终止条件&#xff1a; p > r …

spring学习(8):log4j.properties 详解与配置步骤

一、入门实例 1.新建一个JAva工程&#xff0c;导入包log4j-1.2.17.jar&#xff0c;整个工程最终目录如下 2、src同级创建并设置log4j.properties ### 设置### log4j.rootLogger debug,stdout,D,E### 输出信息到控制抬 ### log4j.appender.stdout org.apache.log4j.ConsoleAp…

[hackinglab][CTF][注入关][2020] hackinglab 注入关 writeup

服务器挂了 咕咕咕 参考链接&#xff1a;https://blog.csdn.net/weixin_41924764/article/details/107095963?utm_mediumdistribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_sourcedistribute.pc_relevant_t0.none-task-bl…

数据结构六——堆

文章出处&#xff1a;极客时间《数据结构和算法之美》-作者&#xff1a;王争。该系列文章是本人的学习笔记。 1 堆定义 1.1 定义和结构 堆是一个完全二叉树&#xff08;完全二叉树&#xff1a;除了叶子节点外每一层节点都是满的&#xff0c;最后一层的子节点都靠左排列&…

学习进度13

时间15h代码量200行知识点 php连接数据库 jsp连接数据库 转载于:https://www.cnblogs.com/my---world/p/10964250.html

spring学习(9):idea的config配置

点开eventlog 点击之后 勾选 apply---ok

[hackinglab][CTF][上传关][2020] hackinglab 上传关 writeup

上传关 1 请上传一张jpg格式的图片 关键字&#xff1a; 步骤&#xff1a; 1.F12查看源码 2.输入网址 获得key http://lab1.xseclab.com/upload1_a4daf6890f1166fd88f386f098b182af/upload_file.php上传关 2 关键字&#xff1a;burp 知识点&#xff1a; 步骤&#xff1a;看源…

靠谱的Pycharm安装详细教程

如何在本机上下载和安装Pycharm&#xff0c;具体的教程如下&#xff1a; 1、首先去Pycharm官网&#xff0c;或者直接输入网址&#xff1a;http://www.jetbrains.com/pycharm/download/#sectionwindows&#xff0c;下载PyCharm安装包&#xff0c;根据自己电脑的操作系统进行选择…

数据结构六——堆的应用

文章出处&#xff1a;极客时间《数据结构和算法之美》-作者&#xff1a;王争。该系列文章是本人的学习笔记。 堆比较适合动态数据的场景。 1 应用一&#xff1a;优先级队列 一个优先级队列就是一个堆。 1.1 合并小文件 假设我们有100个小文件。每个文件中的字符串按照从小到…