请各位大虾帮帮忙,看看这道C,感激不尽!

2024-12-20 07:20:07
推荐回答(6个)
回答1:

答案
你好好跟踪一下就发现问题了。
这个改错题,我做过,第一个改为if (n ==0)
第二个 改为 result *= n--;
完事,o(∩_∩)o...!

回答2:

#include
#include
double fun(int n)
{
double result = 1.0;
/********found********/
if (n == 1)
return 1.0;
while (n>1 && n<170)
/********found********/

//缺一对 { }

{
result = n*fun(--n);
return result;
}

}

main()
{
int n;
printf("Input N:");
scanf("%d", &n);
printf("\n\n%d!=%1f\n\n", n, fun(n));
}

回答3:

printf("\n\n%d!=%1f\n\n", n, fun(n)这一句错了。
1f为输出1位整数。

回答4:

楼上是对的,1楼的怎么可能在while中return呢?
一个函数只有一个返回值的啊

回答5:

double fun(int n)
{
if(n<=1)
return 1;
else
return n*fun(n-1)
}
main()
{
int n;
printf("Input N:");
scanf("%d", &n);
printf("\n\n%d!=%lf\n\n", n, fun(n));
}
楼主,这个题不用循环就可以解决的。用递归函数的目的就是为了减少循环代码。

回答6:

#include
#include
double fun(int n)
{
double result = 1.0;
/********found********/
if (n == 1)
return 1.0;
while (n>1 && n<170)
/********found********/