2406: C语言习题 求n阶勒让德多项式

时间:2023-03-08 20:15:49

2406: C语言习题 求n阶勒让德多项式

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 961  Solved: 570
[Submit][Status][Web Board]

Description

用递归方法求n阶勒让德多项式的值,递归公式为
n=0     pn(x) =1  
n=1     pn(x) =x
n>1     pn(x) =((2n-1)*x* pn-1(x) -(n-1)* pn-2(x))/n
结果保留2位小数。

Input

n和x的值。

Output

pn(x)的值。

Sample Input

2 2

Sample Output

5.50

HINT

主函数已给定如下,提交时不需要包含下述主函数

/* C代码 */

int main()

{

int x,n;

scanf("%d%d",&n,&x);

printf("%.2f\n",polya(n,x));

return 0;

}

/* C++代码 */

int main()

{

int x,n;

cin>>n>>x;

cout<<setiosflags(ios::fixed);

cout<<setprecision(2);

cout<<polya(n,x)<<endl;

return 0;

#include<stdio.h>
float polya(int n,int x)
{
float sum;
if(n==0)
sum=1;
else if(n==1)
sum=x;
else if(n>1)
sum=((2*n-1)*x*polya(n-1,x)-(n-1)*polya(n-2,x))/n;
return sum;
}
int main()
{
int x,n;
scanf("%d%d",&n,&x);
printf("%.2f\n",polya(n,x));
return 0;
}
注意调用函数的数据类型,因为最后是保留两位小数输出的!