
c语言问题:用递归法求n阶勒让德多项式的值(已写程序求改正)
题目:已知计算x的n阶勒让德多项式值的公式如下:1(n=0)Pn(x)=x(n=1)((2n-1)*x*Pn-1(x)-(n-1)*Pn-2(x))/n(n>1)请编写递...
题目:
已知计算x的n阶勒让德多项式值的公式如下:
1 (n=0)
Pn(x) = x (n=1)
( (2n-1)*x*Pn-1(x)-(n-1)*Pn-2(x))/n (n>1)
请编写递归程序实现。
我写的程序:
double pn(double n,double x)
{
if(n==0)return(1);
else if(n==1) return(x);
else return(((2*n-1)*x-pn(n-1,x)-(n-1)*pn(n-2,x))/n);
}
main()
{
double n,x;
scanf("%lf%lf",&n,&x);
printf("%.2lf",pn(n,x));
getch();
}
经测试这个程序只对部分n,x有效,当n,x很大时无法输出结果。
请C高手帮忙看看这个程序的不足之处并改之,谢谢! 展开
已知计算x的n阶勒让德多项式值的公式如下:
1 (n=0)
Pn(x) = x (n=1)
( (2n-1)*x*Pn-1(x)-(n-1)*Pn-2(x))/n (n>1)
请编写递归程序实现。
我写的程序:
double pn(double n,double x)
{
if(n==0)return(1);
else if(n==1) return(x);
else return(((2*n-1)*x-pn(n-1,x)-(n-1)*pn(n-2,x))/n);
}
main()
{
double n,x;
scanf("%lf%lf",&n,&x);
printf("%.2lf",pn(n,x));
getch();
}
经测试这个程序只对部分n,x有效,当n,x很大时无法输出结果。
请C高手帮忙看看这个程序的不足之处并改之,谢谢! 展开
展开全部
勒让德多项式中要求x在0到1之间吧?你把n和x设的很大的时候是否会超出double的有限范围?
参考资料: http://acm.zjut.edu.cn/ShowProblem.aspx?ShowID=1209
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询