递归问题整理.docxVIP

  • 17
  • 0
  • 约5.29千字
  • 约 7页
  • 2022-07-15 发布于上海
  • 举报
不敢说是总结,就是把自己看到的一些递归相关题目整理一下,并按照自己的理解归下类~ 单路递归(一个递归过程中只有一个递归入口) 多路递归(一个递归过程中有多个入口) 间接递归(函数可通过其他函数间接调用自己) 迭代递归(每次递归调用都包含一次循环递归) 下面一一整理,注意许多题目都有更优解法,如 DP,但是暂不讨论。 先说说解递归的一般思路吧,把原问题分解为更小的子问题,再从子问题里慢慢寻找原问题的解。实际上递归是一种思路,解题时首先列出递归表达式,然后用程序语言的方式把他表现出来。往往递归都可转化为循环或者模拟调用栈来实现,但是递归表达更利于理解。 一,单路递归(递归链) 1,求 n 的阶乘(经典实例) int factorial(int n) { if (n == 0) //基线条件(base case) { return 1; } else { return n * factorial(n - 1); //将问题规模逐渐缩小,或者说转化为更小更简单的子问题 } } 2,堆结构的维护(可参考数据结构相关书籍) 上面的例题是比较简单的单路递归,类似的还有递归遍历目录下所有文件,下面介绍复杂一点的,不同的递归调用在不同的条件判断语句里,这也是单路递归:) 3,迷宫问题(实际上属于深度优先搜索的范畴) 通用解法: bool FindPathThroughMaze( Maze maze,

文档评论(0)

1亿VIP精品文档

相关文档