Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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_Reference - Fatal编程技术网

C++ 递归中的引用

C++ 递归中的引用,c++,recursion,reference,C++,Recursion,Reference,我在这段代码中为map使用了一个引用,但是当我不使用引用时,映射不会被递归地填充。我已经解决了这个问题,但不知道为什么我需要使用引用,因为我已经提供了map作为参数。你能详细说明一下吗 void util(Node* root,map<int,int> &m, int level) { if (!root) return; m[level]+=root->data; util(root->right,m,level); uti

我在这段代码中为
map
使用了一个引用,但是当我不使用引用时,映射不会被递归地填充。我已经解决了这个问题,但不知道为什么我需要使用引用,因为我已经提供了
map
作为参数。你能详细说明一下吗

void util(Node* root,map<int,int> &m, int level) {
    if (!root) return;

    m[level]+=root->data;

    util(root->right,m,level);

    util(root->left,m,level+1);
}

void diagonalSum(Node* root) {
    map<int,int> m;

    util(root,m,0);
    // cout<<m.size();
    for(auto i=m.begin();i!=m.end();i++){
        cout<<i->second<<" ";
    }
    cout<<"\n";
}
void util(节点*根、映射和m、int级别){
如果(!root)返回;
m[级别]+=根->数据;
util(根->右,m,级别);
util(根->左,m,级别+1);
}
无效对角和(节点*根){
地图m;
util(根,m,0);

//cout当不使用引用时,调用函数时会得到映射的副本

发件人:
如果按值传递,则每个函数调用将收到地图的副本。修改副本不会修改原始地图。

如果按值传递,则每个函数调用将收到地图的副本。修改副本不会修改原始地图。每一本像样的教程、书或类都应该包含该信息。从这里开始:您将看到相同的pr没有递归的问题。