用递归方法求解
特别感谢jxnu为我前几个问题的回帖,每个回复的程序都思路清晰,说明详细,可读性很强.用递归方法求n阶勒让德多项式,递归公式为:
1 (n=0)
Pn(x)= { x (n=1)
((2n-1)xPn-1(x)-(n-1)Pn-2(x))/n (n>1)
----------------解决方案--------------------------------------------------------
一条函数题目。
----------------解决方案--------------------------------------------------------
你的题写的不清楚,Pn-1(x)什么意思,会不会是Pn(x-1)?
----------------解决方案--------------------------------------------------------
/*直接按照给出的公式写就是了*/
float Pn(int n,float x)
{
if(n==0)
{
return(1);
}
if(n==1)
{
return(x);
}
else
return(((2*n-1)*x-Pn(n-1,x)-(n-1)*Pn(n-2,x))/n);
}
----------------解决方案--------------------------------------------------------
对楼上的回复,我想做一个改正(公式写错了哈)
return(((2*n-1)*x*Pn(n-1,x)-(n-1)*Pn(n-2,x))/n);
其它我不知道了.
----------------解决方案--------------------------------------------------------
以下是引用编程学者在2006-10-13 11:25:07的发言:
对楼上的回复,我想做一个改正(公式写错了哈)
return(((2*n-1)*x*Pn(n-1,x)-(n-1)*Pn(n-2,x))/n);
return(((2*n-1)*x-Pn(n-1,x)-(n-1)*Pn(n-2,x))/n);
和楼主的是不一样,是我错了,但n阶勒让德多项式就是这样的.
其它我不知道了.
对楼上的回复,我想做一个改正(公式写错了哈)
return(((2*n-1)*x*Pn(n-1,x)-(n-1)*Pn(n-2,x))/n);
return(((2*n-1)*x-Pn(n-1,x)-(n-1)*Pn(n-2,x))/n);
和楼主的是不一样,是我错了,但n阶勒让德多项式就是这样的.
其它我不知道了.
----------------解决方案--------------------------------------------------------
是是!
----------------解决方案--------------------------------------------------------