假设您有以下递归函数。假设节点参数是头:
def to_string(node):
a_str = ""
if node.next != None:
a_str += str(node.val)
to_string(node.next)
else:
return a_str
Run Code Online (Sandbox Code Playgroud)
我想记录所有节点的值。该代码能够获取这些值,因为它正在使用下一个节点 调用自身,to_string(node.next)但它无法存储这些值并返回正确的字符串,因为a_str它会在每次调用时重新初始化。是否有函数内解决方案,或者我必须依赖全局变量?
假设您有以下代码:
long& fn2(long& another_var1, long another_var2){
another_var1 = another_var1 + another_var2;
another_var2 = another_var2 + another_var1;
return another_var1;
}
int main (){
cout << boolalpha;
long var1 = 5;
long var2 = 10;
auto result = fn2(var1, var2);
cout << &result << endl;
cout << &var1 << endl;
cout << result << endl; //Line 1
cout << (&result == &var1) << endl; //Line 2
}
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作,直到你到达Line 2,false返回的地方.当你auto result,它应该是一个引用变量another_var1,它是一个引用var1,即它们都应该具有相同的地址 - 它们只是同一内存的名称别名.看着 …