/*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);
}

递归算法中运行时显示错误:类型为“float”和“float(int,float)”的操作数对二进制运算符*无效
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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函数需要参数的
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用