递归的深度理解

【递归的深度理解】弓背霞明剑照霜,秋风走马出咸阳。这篇文章主要讲述递归的深度理解相关的知识,希望能为你提供帮助。
总所周知,我们使用搜索以及许多算法,都要用到递归,递归的使用要弄明白并不难,但是想要理解搜索中dfs的使用就要理解一番,
以如下代码为例:

void dfs(int x,int step,int s)

//限制条件1,当步数相等时,即返回;
//即有一个条件,来限制;
//dfs的核心
if(step==cnt)

ans=min(s,ans);
return ;

//剪枝1;不具体介绍了
//减少复杂度的重中之重
if(s> ans)
return ;
//dfs中的具体实现过程
for(int i=1; i< =cnt; i++)

if(vist[i])
continue ;
vist[i]=1;
/*重点讲下搜索中笔者对递归的理解
dfs使用递归,即递归定义,自己调用自己;
当你进入dfs函数中,即类进入新的函数;
当函数结束时或是达到限定条件时就返回;
即如 此函数,若是结束就for循环找下一个结点;
直到找完所有结点;记录下最小的s;
当然若是只要求找到结点,未要求最小,便可添加条件,用bool判断,当找到令其为true;
即为判断条件,退出搜索;
递归结束;
讲的比较啰嗦,主要是为了能够用程序思维去编写算法题来理解做准备;
*/
dfs(i,step+1,s+dis[x][i]);
vist[i]=0;











    推荐阅读