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没有递归的问题。