- 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)