DFS递归实现图的遍历,在函数中加return和不加return的区别
高洛峰
高洛峰 2016-11-04 11:30:21
0
1
688

直接上代码来说明问题:(return 指的是 void DFS( int x) 函数里面的那个)

#include #include #include int check[11] = {0}; int Graph[11][11]; int N; void DFS( int x){ int i,j; check[x] = 1; printf("%d ",x); for( i = 0; i < N; i++){ if( Graph[x][i] && !check[i]){ return DFS(i);//加不加指的是这个return,不加return即DFS(i); } } } int main(){ int E; int i,j; int v,w, index; scanf("%d %d",&N, &E); memset(Graph, 0, N*N); /* 读取边 */ for( i = 0 ; i < E; i++){ scanf("%d %d",&v, &w); Graph[w][v] =Graph[v][w]= 1; } /* DFS */ for( i = 0; i < N; i++ ){ if( !check[i] ){ printf("{ "); DFS(i); printf("}"); printf("\n"); } } return 0; }

测试数据

输入样例:

8 6
0 7
0 1
2 0
4 1
2 4
3 5
输出样例:

{ 0 1 4 2 7 }
{ 3 5 }
{ 6 }

加return的测试用例结果

122.png

不加return的测试用例结果

122.png

显然,不加才是对的。
请问为什么?
加和不加的区别在哪里?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답 (1)
三叔

遍历图。。。
你设定的 i 加了就执行一次
不加就直到i==N

    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!