Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 递归时为参数赋值_C++_Recursion - Fatal编程技术网

C++ 递归时为参数赋值

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("%

我对这种递归有点怀疑 当第一次在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("%d",f[u]);
        dfs(u, v);
    }
}
void dfs(int v,int p=-1)
中,
-1
是默认值

所以当你写作的时候

dfs(42);
事实上是这样

dfs(42, -1);

但如果提供参数,则不使用默认值。

如果使用两个参数调用
dfs
,则两个参数都将分别设置为
v
p
。如果传递两个参数,则没有默认值。