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

article/2025/10/7 3:56:43

🐋作者简介:博主是一位.Net开发者,同时还是RPA和低代码平台的践行者。
🐬个人主页:会敲键盘的肘子
🐰系列专栏:数据结构与算法
🦀专栏简介:图解经典算法,C#代码实现,算法升级版。
🐶座右铭:总有一天你所坚持的会反过来拥抱你。

🌈写在前面:

本文主要介绍了递归的基本概念、应用场景和原则。


活动地址:CSDN21天学习挑战赛

👉本文关键字:递归算法、迷宫问题、八皇后问题、C#

文章目录

      • 1️⃣ 基本概念
        • ♈ 概念
        • ♉ 条件
        • ♊ 斐波纳契数列
      • 2️⃣ 应用场景
        • ♈ 解决的问题
        • ♉ 案例

1️⃣ 基本概念

♈ 概念

一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。

上述定义来自百度百科

递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。

♉ 条件

  1. 子问题须与原始问题为同样的事,且更为简单;

  2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。

♊ 斐波纳契数列

斐波纳契数列是典型的递归案例:

递归关系就是实体自己和自己建立关系。
F i b ( 0 ) = 1 , F i b ( 1 ) = 1 , F i b ( n ) = ( F i b ( n − 1 ) + F i b ( n − 2 ) ) Fib(0) = 1 , Fib(1) = 1 , Fib(n) = (Fib(n-1) + Fib(n-2)) Fib(0)=1Fib(1)=1Fib(n)=(Fib(n1)+Fib(n2))
尽管有许多数学函数均可以递归表示,但在实际应用中,递归定义的高开销往往会让人望而却步。例如:
1 ! = 1 1! = 1 1=1
对所有n > 1的整数:
n ! = n ∗ ( n − 1 ) ! n! = n*(n-1)! n!=n(n1)!
这种便于理解的心理模型,是认为递归定义对对象的定义是按照“先前定义的”同类对象来定义的。例如:你怎样才能移动100个箱子?答案:你首先移动一个箱子,并记下它移动到的位置,然后再去解决较小的问题:你怎样才能移动99个箱子?最终,你的问题将变为怎样移动一个箱子,而这时你已经知道该怎么做的。

2️⃣ 应用场景

♈ 解决的问题

  1. 各种数学问题如: 8皇后问题 , 汉诺塔, 阶乘问题, 迷宫问题;
  2. 各种算法中也会使用到递归,比如快排,归并排序,二分查找,分治算法等;
  3. 数据的结构形式是按递归定义的,如二叉树、广义表等,由于结构本身固有的递归特性;

♉ 案例

  1. 迷宫问题
    如何求出最短路径?
    在这里插入图片描述

    说明
    小球得到的路径,和程序员设置的找路策略有关,即找路的上下左右的顺序相关,再得到小球路径时,可以先使用(下右上左),再改成(上右下左),看看路径是不是有变化。
    思路

    • 定义二维数组map[][]为迷宫;
    • map[i][j]为0时表示没有走过,当1时表示为墙,当2时表示通路可以走,当3时表示此路不通;
    • setWay()方法表示找路。返回一个bool类型的值,当为true时表示该路可以走通,当为false时表示该路走不通;
    • 在走出迷宫(到达终点)时,需要我们自己定制一个方法(道路),比如我们按照下->右->上->左。一步一步向前探索,如果该点走不通,再回溯。
    • 每当我们走到一个点的时候,把该点的值设置为2,就是暂时假定该路能走通,至于到底走通没走通,得看后面有没有找到通路。
    • 如果后面的路能走通,从最后一个点开始返回,setWay()递归调用都返回true,如果后面的路不能走通,那么将当前的点设置为3,表示是思路,即走不通,回溯到上一个点,看看其他方向能不能走通。
  2. 八皇后问题介绍
    八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。

在这里插入图片描述

思路

  • 第一个皇后先放第一行第一列;
  • 第二个皇后放在第二行第一列、然后判断是否OK, 如果不OK,继续放在第二列、第三列、依次把所有列都放完,找到一个合适;
  • 继续第三个皇后,还是第一列、第二列……直到第8个皇后也能放在一个不冲突的位置,算是找到了一个正确解;
  • 当得到一个正确解时,在栈回退到上一个栈时,就会开始回溯,即将第一个皇后,放到第 - 然后回头继续第一个皇后放第二列,后面继续循环执行 1,2,3,4的步骤 。

⭐写在结尾:

文章中出现的任何错误请大家批评指出,一定及时修改。

希望看在这里的小伙伴能给个三连支持


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

相关文章

递归算法详细解析

递归 程序调用自身的编程技巧称为递归( 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.如风搜 如风搜,全网网盘搜索工具。是您工作、学习、娱乐的好助手。找好资源&…

6个超级实用的免费网盘搜索网站分享

因为各种原因,多数网盘搜索网站“寿命”都很短,也有很多百度网盘搜索站点都提高了使用门槛(比如付费才能使用)。 分享几个自己认为搜索的资料蛮全,到现在(2021年)为止还能使用的网盘搜索网站。…

我珍藏很久的网盘资源搜索网站和下载神器

摘要:分享几个网盘资源搜索网站和下载神器。 这是「每周分享」的第 17 期。最近有不少新朋友关注,所在再介绍一下这个栏目,每个周末分享一篇 Python 以外的文章,主题涉及:软件、App、PPT、Ps 等几个方面。往期内容你可…