递归时为参数赋值

时间:2018-11-23 17:07:43

标签: c++ recursion

我对此递归有一个小疑问 当will首次调用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);
    }
}

1 个答案:

答案 0 :(得分:1)

void dfs(int v, int p = -1)中,-1是默认值。

所以当你写

dfs(42);

实际上是

dfs(42, -1);

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