Bey-Hey 2022-05-11 00:20 采纳率: 85%
浏览 17
已结题

递归算法中运行时显示错误:类型为“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

  • 写回答

1条回答 默认 最新

  • cdh929511015 2022-05-11 06:19
    关注
    
                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函数需要参数的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月19日
  • 已采纳回答 5月11日
  • 创建了问题 5月11日

悬赏问题

  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 qgcomp混合物线性模型分析的代码出现错误:Model aliasing occurred
  • ¥100 已有python代码,要求做成可执行程序,程序设计内容不多
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答
  • ¥20 在本地部署CHATRWKV时遇到了AttributeError: 'str' object has no attribute 'requires_grad'