您的位置:首页 > 编程语言 > C语言/C++

C++ 函数的递归调用

2017-02-06 00:11 423 查看
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归(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函数,退出了递归。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: