中国IT者C语言入门专题讲座 第十讲 函数(3)

时间:2007-07-14 07:08:31   来源:chinaitzhe.com  作者:ChinaITzhe  编辑:gaopoadmin

  函数的递归调用

  一个函数在它的函数体内调用它自身称为递归调用。 这种函数称为递归函数。C语言允许函数的递归调用。在递归调用中, 主调函数又是被调函数。执行递归函数将反复调用其自身。 每调用一次就进入新的一层。例如有函数f如下:

int f (int x)
{
int y;
z=f(y);
return z;
}

  这个函数是一个递归函数。 但是运行该函数将无休止地调用其自身,这当然是不正确的。为了防止递归调用无终止地进行, 必须在函数内有终止递归调用的手段。常用的办法是加条件判断, 满足某种条件后就不再作递归调用,然后逐层返回。 下面举例说明递归调用的执行过程。

  [例5.9]用递归法计算n!用递归法计算n!可用下述公式表示:

n!=1 (n=0,1)
n×(n-1)! (n>1)
按公式可编程如下:
long ff(int n)
{
long f;
if(n<0) printf("n<0,input error");
else if(n==0||n==1) f=1;
else f=ff(n-1)*n;
return(f);
}
main()
{
int n;
long y;
printf("/ninput a inteager number:/n");
scanf("%d",&n);
y=ff(n);
printf("%d!=%ld",n,y);
}
long ff(int n)
{ ……
else f=ff(n-1)*n;
……
}
main()
{ ……
y=ff(n);
……

关键字:函数,递归调用,中国IT者,C语言入门,专题讲座,第十讲, 函数

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面