C++语言允许一个函数体中出现调用自身的语句,称为直接递归调用。也允许被调用的另一个函数又反过来调用原函数,称为间接递归调用。
递归调用之所以可以实现,关键是系统使用堆栈来保存函数调用中的传值参数、局部变量和函数调用后的返回地址
构成递归的两个基本要素:
1.描述问题规模逐步减小的递归算法
2.描述基本情况的递归终止条件
例程1 求正整数a和b的最大公约数
int gcd(int a,int b)
{
int g;
if(b==0) g=a;
else gcd(int b,a%b);
return g
}
int main()
{
int a,b;
cin>>a>>b;
cout<<gcd(a,b);
return 0
}
例程2 斐波那契数列的第N项
long fun(int n)
{
if(n==1||n==2)return n;
else return fun(n-1)+fun(n-2);
}
int main()
{
long value,n;
cout>>n;
value=fun(n);
cout<<value<<endl;
return 0;
}