作业帮 > 综合 > 作业

求注一道 C 语言题目 我想问 一些 细节 求大神解答

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/04/29 23:41:54
求注一道 C 语言题目 我想问 一些 细节 求大神解答
用递归法求:
(x/1!)+(x*x*x/3!)+(5个x相乘/5!)+……+((2n-1)个X相乘/(2*n-1)!)
当N为某值时上式为多少?(到第n项,n和x的值由键盘输入.)
我这样编的
#include
int main()
{
int n,x,a;
scanf("%d%d\n",&n,&x);
a=2*n-1;
printf("%d\n",fun(a));
}
fun(int a)
{
int t;
if(a==1) t=x;
else t=a*x/(m(a))+fun(a-2);
return t;
}
m(int a)
{
int d;
if(a==2) d=2;
else d=a*m(a-1);
return d;
}
首先 fun 循环中不能存在变量K,去掉变量K 就没错误了,但真心不能去啊,其次这题答案肯定含有小数,应该使用浮点型变量,但用浮点型变量就错误,用整形还是错,这2 个关键点求大神帮解答啊,研究了很长时间,还是不知道怎么办.
求注一道 C 语言题目 我想问 一些 细节 求大神解答
#include<stdio.h>
#include<math.h>

float fun(int,int);//函数定义在主调函数之后,需要在主调函数前加声明
int m(int);

int main()
{
\x05int n,x,a;
\x05scanf("%d%d",&n,&x);//scanf里不要加\n !
\x05a=2*n-1;
\x05printf("%f\n",fun(a,x));//输出为%f
\x05return 0;
}

float fun(int a,int x)
{
\x05float t;

\x05if(a==1)
\x05\x05t=x;
\x05else
\x05\x05t=pow(x,a)/m(a)+fun(a-2,x);

\x05return t;
}
\x05
int m(int a)
{
\x05//不需要设置一个变量,浪费空间
\x05if(a==1)
\x05\x05return 1;//1的时候返回的应是1,1!=1
\x05else
\x05\x05return a*m(a-1);
}
你在fun函数中使用t=x,但你并未把x传递给fun函数,这个时候你有两个选择,第一,将x设为全局变量,第二,给fun函数增加一个形参,把x传递给它.

求x的a次方不能用a*x,也不能用a^x,必须使用pow函数,使用pow函数需要加上头文件<math.h>.

函数返回变量会自行创建副本,不需要额外设置一个变量用来返回特定值.

另外这里float fun(int a,int x)如果觉得float精度不够可以改成double,你讲代码中的float全改成double就可以了.

没有实验数据,无法验证程序是否有逻辑错误,楼主自行验证,如有问题,可Hi我.

2013 6 17 6:22
唐明Cpp
再问: 谢了,但首先那个好像不是求x的a次方,而是a个x相乘
再答: pow(x,a)是x^a,x的a次方, 就算不是,你自己换个顺序不就好了……无语啊…… 不是求x的a次方,而是a个x相乘??? x的a次方是什么意思???就是a个x相乘啊!!! 求n个相同因数乘积的运算叫做乘方(power)!!!