我想用一个全局变量来控制递归的深度,但是不行呀,怎么办?
上课讲的网络通讯中的洪泛算法,我想编程来实现,用递归,但是其中要控制递归的深度,如果是直线递归的话,用一个全局变量就能搞定了,但我的递归是要有分叉的,控制在5层,这样不行。简单地说,有3个节点a,b,c,b和c是a的子节点,如果在循环中由a递归到b,这时到了要求的深度,循环就应该break,但是其实还有一个与b处于相同层次的c没有递归到,这种情况应该怎么控制呢?这不同于树。不能用树的遍历方法来实现,不知道我讲清了没有,我写的程序如下,但是有错误,多谢各位高手相助!
#include <iostream>
using namespace std;
int graph[6][6]={{0,1,1,1,0,0},{1,0,1,1,0,0},{1,1,0,1,1,1},{1,1,1,0,1,0},{0,0,1,1,0,1},{0,0,0,0,0,0}}; //图,相邻节点用1表示,0表示两节点间没边
int count=0; //网络负荷,一个节点相邻一个节点发送一个数据包,负荷增一
int num[6]={0,0,0,0,0,0};
int m=0;
void send(int i,int j) {
m++;
int a;
for(a=0;a<6;a++) {
if(m==5) {
m=0;
break;
}
if(graph[j][a]==1 && a!=i) { //节点不能向刚收到数据
// 的节点发送数据
count++;
num[j]++;
cout<<j<<"->"<<a<<endl;
if(a!=5) //节点6为终点,不向外发送数据
send(j,a); }
}
}
int main() {
int i=0;
int b;
for(b=0;b<6;b++) {
if(graph[0][b]==1) {
num[0]++;
count++;
cout<<0<<"->"<<b<<endl;
send(0,b);
}
}
cout<<count<<endl;
for(int c=0;c<6;c++) {
cout<<c<<":"<<num[c]<<endl;
}
return 0;
}