c++函数有一种有趣的特点——可以自己调用自己,称为递归。
* 包含一个递归调用的递归
如果递归函数调用自己,那么被调用的函数也将调用自己,这将导致无限死循环,除非代码中包含终止调用链的程序。通常是将递归放在if语句中。格式:
void recurs(argumentList)
{
statements1;
if(test)
{
recurs(arguement);
}
statements2;
}
递归调用:只要if语句为true,则每个recurs()调用都将执行statements1,然后再调用recurs(),而不会执行statements2。当if语句为false,当前调用将执行statements2。当前调用结束后,程序控制权将返回给调用它的recurs(),而该recurs()将继续调用其下面将要执行的statements2部分代码,然后结束,继续再上一级调用,以此类推。
程序示例:
#include <iostream>
using namespace std;
void countdown(int n);
int main()
{
int i=5;
countdown(5);
cout<<"Done.\n";
return 0;
}
void countdown(int n)
{
cout<<"countdown: "<<n<<endl;
if (n>0)
{
countdown(n-1);
}
cout<<n<<" Kaboom!"<<endl;
}
输出结果: