求改C语言,调用递归函数,求勒让德多项式

#include
void main()
{int lerande(int n,float x);
int n,p,y;
float x;
printf("请输入阶数:");
scanf("%d",&n);
printf("请输入x的值:");
scanf("%d",&x);
y=lerande(n);
printf("%d阶勒让德多项式的值:%d\n",n,y);
}

int lerande(int n,float x)
{float f;
if(n==0)
{f=1;}
else if(n==1)
{f=x;}
else
{f=(2*n-1)*x;
f=f-lerande(n-1);
f=f-(n-1)*lerande(n-2);
f=f/n; }
return(f);}
为什么一直提示too few actual parameters呢
求神人改程序
请附上修改后的程序
你的函数定义是这样:int lerande(int n,float x);但是你调用的时候是这样:y=lerande(n);,明显的一个歼纳游函数的参数是2个,而你只传入一个参数,所以他会提示氏销参数过少。
这是程序的源码:
#include

void print(float a){
printf("%5.2f\n",a); //你的程序里printf("%5.2\n",a); 5.2后面少了个f
}
float p( int n,float x){
static float k;
if(n==0){
k=0.0;
}
else if(n==1) k=x; /茄启/这里把你的k=1.0改成了k=x;
else k=((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n;
return(k);
}
int main(){
int a;
float b;
printf("please input an integer,a real number!\n");
while(1){
scanf("%d %f",&a,&b);
print(p(a,b));
}
return 0; //main函数是int 型,最好加个返回值。
}
#include
int main()
{
int lerande(int n,int x);//上下保持一致 int型
int n,y;//p没用到
int x;
printf("请输入阶数:");
scanf("%d",&n);
printf("请输入x的值:");
scanf("%d",&x);
y=lerande(n ,x);//传搜掘两个参数就行
printf("%d阶勒让德多项耐拆式的值:%d\n",n,y);
}

int lerande( int n , int x )//int 形的 不能昌漏枣返回float值
{
int f ;
if( n == 0 )
{
f = 1 ;
}
else if( n == 1 )
{
f = x ;
}
else
{
f=(2*n-1)*x;
f=f-lerande(n-1 , x );//传的参数要有两个
f=f-(n-1)*lerande(n-2 , x );
f=f/n;
}
return(f);
}
.exe - 0 error(s), 0 warning(s)
函丛清数定义是两个参数: int lerande(int n,float x)
调用是y=lerande(n);一个参数,当然提示实参数目磨禅不对啦
目测应该渗游前是y=lerande(n,x);
勒让德多项式中要求x在0到1之间吧?你把n和x设的很大的时候是否会超出double的有限范围? ~
y=lerande(n);少传入一个参数
求改C语言,调用递归函数,求勒让德多项式
← 上一篇: 下一篇: →