C语言,递归,请问一下这个怎么算的不对啊

  • #include <stdio.h>

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;
}

你的递归代码在哪?