присвоение значения аргументам во время рекурсии - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть небольшое сомнение в этой рекурсии, когда 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 голосов
/ 23 ноября 2018

В void dfs(int v, int p = -1), -1 является значением по умолчанию.

, поэтому, когда вы пишете

dfs(42);

, это на самом деле

dfs(42, -1);

, но еслиВы предоставляете аргумент, значение по умолчанию не используется.

...