【关于递归算法的讲解】

article/2025/10/7 3:54:20

在这里插入图片描述

递归算法

递归算法的思想

利用递归求解问题的三个特性

递归算法求解的执行过程

递推关系

递归算法的应用举例

小结

递归算法

递归算法是一种通过自身调用自身或间接调用自身来达到问题解决的算法。递归的基本思想是把一个要求解的问题划分成一个或多个规模更小的子问题,这些规模更小的子问题应该与原问题保持同一类型,然后用同样的方法求解规模更小的子问题。

处理重复性计算时,递归往往使函数的定义和算法的描述简单明了,易于理解,容易编程和验证。任何利用计算机求解的问题所需的计算时间与其规模是相关的。问题的规模越小,解题所需的时间也越小,从而容易处理,因此很多复杂问题使用了递推技术能够给出非常直观的解法,结构简介清晰,易于算法分析,在计算机领域,递归算法是不可或缺的。

递归算法的思想

利用递归求解问题的三个特性

  • 求解规模为n的问题可以转化为一个或多个结构相同、规模较小的问题,然后从这些小问题的解能方便地构造出大问题的解。

  • 递归调用的次数必须是有限的。

  • 必须有结束递归的条件(边界条件)来终止递归。

递归算法求解的执行过程

递归算法的执行过程划分为递推和回归两个阶段。在递推阶段,把规模为n的问题的求解推到比原问题的规模较小的问题求解,且必须要有终止递归的条件。在回归阶段,当获得最简单情况的解后,逐级返回,依次得到规模较大问题的解。

例子

求f(n)=2^n.

  • 当n=1时,f(1)=2时,f(1)=2可以作为递归出口。

  • 当n>1时,f(n)可以分解为f(n)=2*2^n-1=2f(n-1))。因此原问题f(n)的求解可以转化为求解规模更小的子问题f(n-1),f(n-1)和 f(n)具有同一问题类型。

该问题可以用如下递归方程来表示:

递归算法的计算过程是由复杂到简单再到复杂 。

递推关系

  • 递推关系常用来分析递归算法的时间和空间代价。

  • 递推方程是自然数上的一个函数T(n),它使用一个或多个小于n时的值的等式或不等式来描述。递推方程也称为递推关系或递推式。算法运行时间复杂度主要由关于问题规模的高阶项决定,注意递推方程必须有一个初始条件(也称边界条件)。

  • 计算递推式通常有3种方法:替换方法、迭代方法和公式法。

递归算法的应用举例

汉诺塔问题

斐波那契数列问题

八皇后问题

⛵小结

  • 递归实质就是实现函数自身调用或者相互调用的过程,递归和归纳关联密切,归纳法是证明递归算法正确性和进行算法分析的强有力工具

  • 递归的运算方法,决定了它的效率较低,一是数据要不断进出栈,另一就是存在大量的重复计算,这样使得应用递归时,输入的n值稍大,程序的求解就变得比较困难,故在有些情况下,递归可以转化为效率较高的非递归。

    如果这篇【文章】有帮助到你,希望可以点个赞👍,创作不易,如果有对【Java基础】【后端技术】、【数据结构】【Linux操作系统】感兴趣的小可爱,也欢迎关注 【LNORA】,对【算法设计与分析】感兴趣的可以免费订阅【算法设计与分析】的专栏,如果我的文章有帮助到你,麻烦来个一键三连奥,这将是对我莫大的鼓励,我将为大家带来更加优质的文章!我们可以一起进步,每天进步一点点,我将会给你带来巨大的【收获与惊喜】💝💝!


http://chatgpt.dhexx.cn/article/kRYerZ5n.shtml

相关文章

递归算法即案例

递归(recursion):程序调用自身的编程技巧。 递归满足2个条件: 1. 有反复执行的过程(调用自身) 2. 有跳出反复执行过程的条件(递归出口) 项目中用到递归案例 递归读取文件获取字典…

【递归算法】递归算法的快速入门

🐋作者简介:博主是一位.Net开发者,同时还是RPA和低代码平台的践行者。 🐬个人主页:会敲键盘的肘子 🐰系列专栏:数据结构与算法 🦀专栏简介:图解经典算法,C#代…

递归算法详细解析

递归 程序调用自身的编程技巧称为递归( recursion),它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前…

递归算法详解

递归(英语:recursion)在电脑科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。 0、前言 递归其实和循环是非常像的,循环都可以改写成递归,递归未必能改写成循环,这是一个充分不必要的条…

递归算法及经典递归实现

递归 递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 递归: 在定义自身的同时又出现了对自身的调用 直接递归函数: 在定义函数体中直接调用自己 间接…

递归算法讲解

原作者:书呆子Rico 《递归的内涵与经典应用》 http://my.csdn.net/justloveyou_ 摘要: 大师 L. Peter Deutsch 说过:To Iterate is Human, to Recurse, Divine.中文译为:人理解迭代,神理解递归。毋庸置疑地&#xff0…

递归算法及经典实例----转载啦~

递归算法及经典递归例子代码实例 递归(recursion):程序调用自身的编程技巧。 递归满足2个条件: 1)有反复执行的过程(调用自身) 2)有跳出反复执行过程的条件(递归出…

递归算法的讲解

原作者:书呆子Rico 《递归的内涵与经典应用》 http://my.csdn.net/justloveyou_ 摘要: 大师 L. Peter Deutsch 说过:To Iterate is Human, to Recurse, Divine.中文译为:人理解迭代,神理解递归。毋庸置疑地&#xff0…

递归算法经典例题及详解

有句话叫递归算法只可意会不可言传,我也领略了,感觉递归算法好神奇,不知不觉的就把工作做完了! 下面这道题也是小编从力扣上看来得,但是关于它是怎样递归的是小编自己想的哦❤️❤️如果有不足,希望大家多多指正&#…

递归算法及经典递归例子代码实现

一、什么叫做递归? 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法; 递归函数就是直接或间接调用自身的函数,也就是自身调用自己; 二、一般什么时候使用递归? 递归时常用的编程技术,其基本…

递归算法(图文详解)

递归算法 一、算法概述 递归算法是一种直接或者间接调用自身函数或者方法的算法。说简单了就是程序自身的调用。二、算法实质 递归算法就是将原问题不断分解为规模缩小的子问题,然后递归调用方法来表示 问题的解。(用同一个方法去解决规模不同的问题&am…

递归算法及经典例题详解

大部分人在学习编程时接触的第一个算法应该就是递归了,递归的思想其实很好理解,就是将一个问题拆分为若干个与本身相似的子问题,通过不断调用自身来求解。 但很多新手在实际操作中却很难正确使用到递归,有时面对问题还会有种无从…

几道经典递归算法案例

一)递归介绍 定义: 1、在函数体中直接或间接的调用自身的一种方法。 2、必须要有边界值,也就是停止的条件。 头递归:函数调用时不是传递本次计算的结果,而是把当前的调用状态传递,相当于要一直记录上一…

【函数递归】简单递归的5个经典例子,你都会吗?

🧸🧸🧸各位巨佬大家好,我是猪皮兄弟🧸🧸🧸 今天和大家谈谈简单递归🥳🥳🥳 🚒什么是递归 递归的定义: 递归是一种解决问题的有效方…

四个超好用的优质资源搜索网站,海量优质资源等你发现!

在网上找资源的时候总找不到满意的优质资源?今天小编把办公室大佬珍藏多年的四个超好用优质资源搜索网站分享给你,只要你想找,没有找不到的资源! 一,学习资料库 学习资料库中有大量的免费学习资料,学习资料…

珍藏多年的技术资源搜索网站——程序员必备

程序员经常需要找一些技术书籍和相关文档,但是通过百度查找往往都是需要各种积分才能够下载,笔者平时的学习中积累几个搜索工具网站,基本上所有需要的技术文档,经典书籍,学习资料,学习视频等等都可以在下列…

在百度上搜不到的资源是在哪找的?就在这些强大的资源搜索网站呀

都说又不懂的问“度娘”最快,但是也有一些东西是在“度娘”哪里也找不到的。那些在百度上搜不到的资源是在哪找的呢?就在这些强大的资源搜索网站呀~ 1.茶杯狐 茶杯狐,它的资源搜索功能很成熟,这里收集了海量的资源可以免费下载&a…

黑科技之资源搜索网站

欢迎加入BIM行业开发交流1群 群号:711844216 一、背景 大家经常会有搜索视频,音乐,PDF,APP等资源的需求,然而通过现有搜索引擎不是很方便找到自己想要的东西,这里笔者推荐几个不错的免费网站,基本上用起来…

超好用的云盘资源搜索网站

超好用的云盘资源搜索网站 云盘资源搜索云云搜索搜百度盘盘搜搜万盘搜索爱挖盘盘搜我的盘 云盘资源搜索 想要的资源轻轻松松一键搞定,让工作生活更轻松。 注*本分享仅供学习参考 云云搜索 http://www.yunyunso.com 搜百度盘 http://www.sobaidupan.com 盘搜…

网盘资源搜索网站

本篇博客总结了百度网盘常用的资源搜索网站。 1.盘搜搜 盘搜搜支持百度云搜索、115网盘、360云盘、华为网盘、新浪微盘等搜索服务,是您工作、学习、娱乐的网盘搜索神器 2.如风搜 如风搜,全网网盘搜索工具。是您工作、学习、娱乐的好助手。找好资源&…