递归算法中运行时显示错误:类型为“float”和“float(int,float)”的操作数对二进制运算符*无效

 /*1、编写一递归算法计算如下函数Pn(x)的值,并转换成对应的非递归算法:
               1                                                                 n=0
Pn(x)=   x                                                                  n=1
              ((2n-1)*x*Pn-1(x)-(n-1)*Pn-2(x))/n         n>1
*/

#include<stdio.h>

float Pn(int n,float x)
{
    float s;
    if(n==0)
        return(1);
    else
        if(n==x)
        return(x);
    else
        {
            s=((2*n-1)*x*Pn-1(x)-(n-1)*Pn-2(x))/n;
            return(s);
            }
}

//转换成非递归
float f1(int n,float x)
{
    int i;
    float s,s1,s2;
    if(n==0)
        return(1);
    else
        if(n==x)
        return(x);
    else
    {
        s1=1;
        s2=2;
        for(i=2;i<=n;i++)
        {
            s=((2*i-1)*x*s2-(i-1)*s1)/i;
            s1=s2;
            s2=s;
        }
        return(s);
    }
}

int main()
{
    int n;
    float x,y;
    printf("请输出n的值:");
    scanf("%d",&n);
    printf("请输出x的值:");
    scanf("%f",&x);
    y=Pn(n,x);
    printf("函数Pn(x)的值为:");
    scanf("%f\n",y)
     y=f1(n,x);
    printf("函数Pn(x)的值为:");
    scanf("%f\n",y);
}


结果显示错误

img

img


            s = ((2 * n - 1) * x * Pn - 1(x)-(n - 1) * Pn - 2(x)) / n;
改

          s = ((2 * n - 1) * x * Pn(n - 1, x)-(n - 1) * Pn(n - 2, x)) / n;

递归是调用函数自己的, 你这个Pn函数需要参数的