在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归(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函数,退出了递归。
