在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归(recursive)调用。包含递归调用的函数称为递归函数。
比如:
int test(int x)
{
int y;
y = test(x);
return(2*y);
}
以上是一个直接调用的例子,递归调用还包括间接调用,比如:
int first(int x)
{
int b;
b = second(x);
return(2*b);
}
int second(int y)
{
int a;
a = first(y);
return(2*a);
}
从上面的程序可以看到,这样执行后会出现无终止的自身调用,所以程序应该加入对用的判断机制,让递归在有限次数后停止。
举个栗子:
用递归的方式求n!
#include <iostream>
using namespace std;
long fac(int);
int main()
{
int n;
long y;
cout <<"请输入";
cin >>n;
y = fac(n);
cout<<n<<"!="<<y<<endl;
getchar();
getchar();
return 0 ;
}
long fac(int n)
{
long f;
if (n <0)
{
cout<<"错误!!!"<<endl;
}
else if(n== 0||n == 1)
f =1;
else
f=fac(n-1)*n;
return f;
}
递归退出的条件:
else if(n== 0||n == 1)
f =1;
如果n等于0或者等于1,那么执行f等于1,不在调用fac函数,退出了递归。