DFS递归实现,在函数中加return和不加return的区别 财富值28

2016-11-04 00:24发布

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


#include<stdio.h> #include<string.h> #include<stdlib.h>  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("
");             }     }     return 0; } 

测试数据

输入样例:

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

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

加return的测试用例结果

不加return的测试用例结果

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

友情提示: 问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
0条回答