这个简单的c程序有问题吗?

来源:百度知道 编辑:UC知道 时间:2024/06/06 20:15:05
#include<stdio.h>
void main()
{
float f1(int n);
int n;
float y;
printf("input an integer number:");
scanf("%d",&n);
y=f1(n);
printf("%d!=%f\n",n,y);
}

float f1(int n)
{
float f;
if(n<0)
{
printf("n<0,dataerror!");
}
else
if(n==0||n==1)
f=1;
else
f=f1(n-1)*n;
ruturn(f);
}
高手帮忙调试一下!!!!

递归调用求阶乘,没什么问题,除了最后面的return打印错误。
另外函数声明很少像你这样放到函数的定义里面。很老的编译器里才这样写。这场应该是把声明放到头文件里或者放到调用它的函数前面。
这样写就可以了:
#include<stdio.h>

float f1(int n);

void main()
{
int n;
float y;
printf("input an integer number:");
scanf("%d",&n);
y=f1(n);
printf("%d!=%f\n",n,y);
}

float f1(int n)
{
float f;
if(n<0)
{
printf("n<0,dataerror!");
}
else
if(n==0||n==1)
f=1;
else
f=f1(n-1)*n;
return(f);
}