kam*_*lot 8 c++ variables recursion scope
假设我有这个递归:
void doSomething(double j)
{
double x;
double y;
x = j -1;
y = j -2 ;
doSomething(x+y);
x = j + 31;
y = j + 12 ;
}
Run Code Online (Sandbox Code Playgroud)
我知道这个递归无限执行,但只是忽略它
我的问题是关于变量x和y在递归树中的范围... x和y的范围是否仅对递归树中特定阶段的函数有效?或者当我再次调用doSomething()时,当递归树中的子doSomething()重新声明x和y时,它是否会重置父项的x和y变量,或者它是否创建了一个全新的x和y变量,它们是有效的仅在递归树中的那个阶段?
Mah*_*esh 10
x和y的范围是否仅对递归树中特定阶段的函数有效?
是.
当我再次调用doSomething(),并且递归树中的子doSomething(),重新声明x和y时,它会重置父项的x和y变量
没有.
是创建一个全新的x和y变量,只对递归树中的那个阶段有效吗?
是.
编辑1: 这个例子应该会有所帮助.
#include <iostream>
void foo( int temp )
{
int num = temp;
if( temp == 0)
return;
foo(temp-1) ;
std::cout << &num << "\t" << num << "\n" ;
}
int main()
{
foo(5) ;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
0xbfa4e2d0 1
0xbfa4e300 2
0xbfa4e330 3
0xbfa4e360 4
0xbfa4e390 5
注意num不同的地址,每次调用都有自己的值num.
Ideone