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