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高手帮忙看看这个程序的不足之处并改之,谢谢!
展开
 我来答
tacyxx
2008-11-21 · TA获得超过1214个赞
知道小有建树答主
回答量:620
采纳率:100%
帮助的人:725万
展开全部
勒让德多项式中要求x在0到1之间吧?你把n和x设的很大的时候是否会超出double的有限范围?

参考资料: http://acm.zjut.edu.cn/ShowProblem.aspx?ShowID=1209

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式