#include <iostream>
void countdown(int n);
int main()
{
countdown(4);
return 0;
}
void countdown(int n)
{
using namespace std;
cout<<"Counting down ... "<<n<<endl;
if(n>0)
{
countdown(n-1);
}
cout<<n<<": Kaboom!\n";
}
注意,每个递归调用都创建自己的一套变量,因此当程序到达第5次调用时,将有5个独立的n变量,其中每个变量的值都不同。为验证这一点,读者可以修改程序清单,使之显示n的地址和值:
void countdown(int n)
{
using namespace std;
cout<<"Counting down ... "<<n<<" n at "<<&n<<")"<<endl;
if(n>0)
{
countdown(n-1);
}
cout<<n<<": Kaboom!"<<" (n at "<<&n<<")"<<endl;
}
Counting down ... 4 n at 0012FF30)
Counting down ... 3 n at 0012FED8)
Counting down ... 2 n at 0012FE80)
Counting down ... 1 n at 0012FE28)
Counting down ... 0 n at 0012FDD0)
0: Kaboom! (n at 0012FDD0)
1: Kaboom! (n at 0012FE28)
2: Kaboom! (n at 0012FE80)
3: Kaboom! (n at 0012FED8)
4: Kaboom! (n at 0012FF30)