简单概念:C++的函数可以自己调用自己,这里main函数除外。
递归用法:如果递归函数调用自己,则被调用的函数也将调用自己,这将无限循环下去,除非代码中包含终止调用链的内容,所以通常将递归调用放在if语句当中。
下面我们直接来看代码分析:
#include<iostream>
void countdown(int n);
int main(void)
{
int n = 4;
countdown(n);
return 0;
}
void countdown(int n)
{
using namespace std;//使用std命名空间
cout << "开始倒数..." << n << endl;
if (n > 0)
{
countdown(n - 1);//函数自己调用自己
}
cout << "开始正数..." << n <<endl;
}
下面是代码的运行结果:
这里我们可以看出递归调用将导致一系列有趣的事件。只要 if语为 true,每个coutdown()都将在if语句中调用一次自己,当if语为false 时,程序才开始执行if之后的代码。当前调用结束后,程序控制权将返回给调用它的countdown(),而该countdown将执行其if之后的 部分,然后结束,并将控制权返回给前一个调用,依此类推。因此,上面的代码中,countdown进行了5次递归调用,则if部分将按函数调用的顺序执行5 次,然后if语句后面部分将以与函数调用相反的顺序执行 5次进入5层递归后,程序将沿进入路径返回。