这段简单的C语言函数定义哪错了??

来源:百度知道 编辑:UC知道 时间:2024/05/26 19:06:44
int jiecheng(int a)

{ int s=jiecheng(a);
jiecheng(a)=a*jiecheng(a-1);
jiecheng(1)=1;
return s;
}

可以看的出来是递归函数,但是函数的第一句又是一个递归,显然真正运行起来会陷入死循环。
另外,jiecheng(a)=a*jiecheng(a-1);这是一个数学表达式,人能够明白, 在c里面是不允许的。因为jiecheng(a)返回的是一个临时变量,没办法赋值。
正确的写法是:
int jiecheng(int a)
{
if (a==1)return 1;
return a*jecheng(a-1);
}

int jiecheng(int a)
{
if(a==1)
return 1;
int s=jiecheng(a);
jiecheng(a)=a*jiecheng(a-1);
return s;
}

你不能直接定jiecheng(a)或者jiecheng(1)的值,因为这不符合C的语法结构。它需要通过递归来获得返回值。

应该这样才正确
int jiecheng(int a)
{
if(a==1)
return 1;
else
retrun a*jiecheng(a-1);
}