递归调用——C++ Primer Plus

来源:互联网 发布:access和mysql的区别 编辑:程序博客网 时间:2024/06/04 01:28

#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)


原创粉丝点击