含义:直接或间接地调用该函数本身。以一个简单的思想说明递归的思想:
fun1(int x)
{
int x,z;
...
z=fun2(y);
...
return z;
}
fun2(int a)
{
int b,c;
...
c=fun1(b);
...
return c;
}
递归调用的条件:
1.必须有完成函数任务的语句,例如上个例子中的return p;
2.有一个测试条件,决定是否继续递归调用。如上个例子中的n==1就是一个测试条件,如果条件满足,就结束递归调用,否则继续递归调用;
3.每次递归调用函数的实参应该逐渐逼近测试条件,才能最终结束递归调用。如上例中,递归调用语句p=peach(n-1)+1;可以使每次调用函数时n的值逐渐减小,逐渐逼近1,最终n=1时,结束递归调用。
4.在递归函数定义中,要先测试条件,后递归调用。即递归是有条件的,只有在一定条件下才可以使用递归调用。
题目示例:用递归方法求sum=1+2+3+...+n,n由键盘输入。
建立递归公式:sum= 1 (当n=1时)
n+sum(n-1) (当n>=2时)
编程如下:
/*C07_13.C*/
#include"stdio.h"
int sum(int n)
{
int s;
if(n==1) s=1;
else s=n+sum(n-1);
return s;
}
main()
{
int n;
printf("Input an integer number:");
scanf("%d",&n);
printf("1+2+3+...+%d=%d\n",n,sum(n));
}
运行结果如下:
Input an integer number:100
1+2+3+...+100=5050