萌新搜索学习笔记
萌新DFS学习笔记
1.1 递归
在学习搜索之前,我们要先学会递归。
先讲一个小故事:有一个宝物被藏在了房子深处,冒险者需要穿过一道道门才能拿到它。有一天,一位冒险家终于开了无数个门,找到了宝物。这时候,他便带着宝物原路返回了,并关上了所有门。
上面就是一个递归的过程,程序就是冒险者,答案就是宝藏。
盗了张图:
是不是原理很简单。
1.2 递归的实现
对于一个递归程序,我们需要考虑两个问题:
- 问题的出口,即什么时候结束递归开始返回。
- 在没到达出口是要做什么。
这个逻辑有点绕,但只要思考清楚以上两个问题,就可以写出完美的递归。
下面是递归的核心代码:
int search(int p)//搜索到第几层,用于判断是否到出口
{
if(p...)//到了出口?
{
return ....;//做什么?
}
...//没到出口做什么?
return search(p+1);//搜索下一层
}
递归的本质就是调用自己
1.3 例题
未完待续