永发信息网

c语言勒让德多项式

答案:5  悬赏:50  手机版
解决时间 2021-04-06 15:36
  • 提问者网友:姑娘长的好罪过
  • 2021-04-06 06:38
c语言勒让德多项式
最佳答案
  • 五星知识达人网友:夜余生
  • 2021-04-06 07:57
公式也有问题
这个应该对了
# include
double p (int n,float x)
{
double j;
if (n == 0)
j = 1;
else if (n == 1)
j = x;
else
j = ((2 * n - 1) * x *p (n-1,x) - (n-1) * p (n-2,x)) / n;
return j;
}
int main ()
{
int n;
float x;
double j;
scanf("%d,%f",&n,&x);
j = p(n,x);
printf("%lf\n",j);
return 0;
}
全部回答
  • 1楼网友:蕴藏春秋
  • 2021-04-06 11:01
你只要把最后输出那一句的%d改成%lf就行了。
最佳答案的公式反而是错的,以下这一句运算符号打错了吧:
j = ((2 * n - 1) * x *p (n-1,x) - (n-1) * p (n-2,x)) / n;
改正如下:
j = ((2 * n - 1) * x -p (n-1,x) - (n-1) * p (n-2,x)) / n;
  • 2楼网友:不想翻身的咸鱼
  • 2021-04-06 10:05
输出结果是什么,想表达的什么错了,需要什么结果,现在的结果又是什么,具体一点才能调试
  • 3楼网友:纵马山川剑自提
  • 2021-04-06 09:46
函数返回值是double类型的,所以把int p (int n,float x)改为double p(int n,float x)。
把printf("%d\n",j)改为printf("%lf\n",j)追问
怎么办
追答n=0,返回1,结果是对的。
另外x是float类型的,原来你写的scanf("%d,%f",&n,&x);为什么现在又改成scanf("%d,%lf",&n,&x);
  • 4楼网友:纵马山川剑自提
  • 2021-04-06 09:01
最后的输出写错了!!!!
# include
int p (int n,float x)
{
double j;
if (n == 0)
j = 1;
else if (n == 1)
j = x;
else
j = ((2.0*n-1 )*x-p(n-1,x)-(n-1)*p(n-2,x))/n;
return j;
}
int main ()
{
int n;
float x;
double j=0.0;
scanf("%d%f",&n,&x);
j = p(n,x);
printf("%f\n",j);
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯