C++ 递归时为参数赋值
我对这种递归有点怀疑 当第一次在main中调用C++ 递归时为参数赋值,c++,recursion,C++,Recursion,我对这种递归有点怀疑 当第一次在main中调用时,p的值将为-1 说明何时将对dfs(2,3)进行第一次递归调用(假设u=2,v=3) 那么3会自动转换成-1吗?或将传递(2,3) 按原样,-1将仅用于第一个递归调用 void dfs(int v, int p = -1) { par[v] = p; for (int u : G[v]) { if (u == p) continue; f[u] += f[v]; printf("%
时,p的值将为-1
说明何时将对dfs(2,3)进行第一次递归调用(假设u=2,v=3)
那么3会自动转换成-1吗?或将传递(2,3)
按原样,-1将仅用于第一个递归调用
void dfs(int v, int p = -1) {
par[v] = p;
for (int u : G[v]) {
if (u == p) continue;
f[u] += f[v];
printf("%d",f[u]);
dfs(u, v);
}
}
在void dfs(int v,int p=-1)
中,-1
是默认值
所以当你写作的时候
dfs(42);
事实上是这样
dfs(42, -1);
但如果提供参数,则不使用默认值。如果使用两个参数调用dfs
,则两个参数都将分别设置为v
和p
。如果传递两个参数,则没有默认值。