|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
以下代码是求解如图所示的数列,用户输入x与n。为什么我将fac函数中的fac(n-1)换成fac(--n)结果就会出错
#include<stdio.h>
double mulx(double x,int n);
long fac(int n);
double sum(double x,int n);
double sum(double x,int n)
{
double s;
if(n>0)
{
s = mulx(x,n)/fac(n) + sum(x,n-1);
}
else
{
s = 1.0;
}
return s;
}
double mulx(double x,int n)
{
int i;
double z=1.0;
for(i=0;i<n;i++)
{
z=z*x;
}
return z;
}
long fac(int n)
{
if(n==1)
{
return 1;
}
return n*fac(n-1);
}
int main()
{
double x;
int n;
printf("Input x and n:");
scanf("%lf%d",&x,&n);
printf("The result is %lf:",sum(x,n));
return 0;
}
return n*fac(--n);
这么写的话是先计算 --n ,这时候n已经变成了 n-1 然后再计算 (n-1)*fac(n-1),
这个结果显然是不对的。
做个简单的测试,比如说
fac(5) 算出来答案是 24,实际上 5!=120。
另外,阶乘和指数运算很容易就超过了 int 的大小,最好是用double 类型。
|
|