答案
你好好跟踪一下就发现问题了。
这个改错题,我做过,第一个改为if (n ==0)
第二个 改为 result *= n--;
完事,o(∩_∩)o...!
#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));
}
printf("\n\n%d!=%1f\n\n", n, fun(n)这一句错了。
1f为输出1位整数。
楼上是对的,1楼的怎么可能在while中return呢?
一个函数只有一个返回值的啊
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));
}
楼主,这个题不用循环就可以解决的。用递归函数的目的就是为了减少循环代码。
#include
#include
double fun(int n)
{
double result = 1.0;
/********found********/
if (n == 1)
return 1.0;
while (n>1 && n<170)
/********found********/