/*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);
}
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函数需要参数的