求注一道 C 语言题目 我想问 一些 细节 求大神解答用递归法求: (x/1!)+(x*x*x/3!)+(5个x相乘/5!)+……+((2n-1)个X相乘/(2*n-1)!) 当N为某值时上式为多少?(到第n项,n和x的值由键盘输入.)我这样编的#in

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 20:32:03

求注一道 C 语言题目 我想问 一些 细节 求大神解答用递归法求: (x/1!)+(x*x*x/3!)+(5个x相乘/5!)+……+((2n-1)个X相乘/(2*n-1)!) 当N为某值时上式为多少?(到第n项,n和x的值由键盘输入.)我这样编的#in
求注一道 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 语言题目 我想问 一些 细节 求大神解答用递归法求: (x/1!)+(x*x*x/3!)+(5个x相乘/5!)+……+((2n-1)个X相乘/(2*n-1)!) 当N为某值时上式为多少?(到第n项,n和x的值由键盘输入.)我这样编的#in
#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