关于递归函数内存的堆栈
经常看到递归函数,老师说递归是反复堆栈实现的,我在菲波那数列加几行代码
跟踪,不知道堆栈中返回临时的值保存到那去了,下次从那里取,那位描述一下这个过程呢
int fac(int n)
{
cout<<"调用fac("<<n<<")"<<endl;
if(n==0||n==1)
{
cout<<"返回"<<n<<endl;
return n;
}
else
{
int temp=fac(n-1)+fac(n-2);
cout<<"返回"<<temp<<endl;
return temp;
}
}
void main()
{
fac(4);
}
运行结果:
调用fac(4)
调用fac(3)
调用fac(2)
调用fac(1)
返回1
调用fac(0)
返回0
返回1
调用fac(1)
返回1
返回2
调用fac(2)
调用fac(1)
返回1
调用fac(0)
返回0
返回1
返回3
Press any key to continue