int main(int argc, char** argv){
int n,i;
float a[100],x;
scanf("%d %f",&n,&x);
a[1]=1.0;
a[2]=x;
for(i=3;i<=n+1;i++)
{
a[i]=((2.0*n-1.0)*x-a[i-1]-(n-1.0)*a[i-2])/n;
}
printf("%.2lf",a[n+1]);
return 0;
}
题目如下:
用递归方法求n阶勒让德多项式的值,递归公式为
P n(x)=
1,n=0
x,n=1
((2n−1)×x−P n−1 (x)−(n−1)×P n−2 (x))/n,n>1
输入
一个自然数和一个浮点数,以空格分割,分别代表n和x
输出
Pn (x)的值,保留两位小数。
样例
输入
6 1.2
输出
0.90
这是我调试的错误
输入
6 1.2
输出
1.12
你也没用递归啊,递归方法如下:
#include <stdio.h>
float fun(int n,float x)
{
if (n==0)
{
return 1;
}else if (n==1)
{
return x;
}else
return ((2*n-1)*x - fun(n-1,x) - (n-1)*fun(n-2,x))/n;
}
int main()
{
int n;
float x;
scanf("%d %f",&n,&x);
printf("%.2f",fun(n,x));
return 0;
}
你的递归代码在哪?