#include "stdio.h"
#include "math.h"
float multi();
main()
{
int n;
float pn,x;
scanf("%d,%f",&n,&x);/*输入x,n值*/
pn=multi(n,x);/*函数调用*/
printf("The multinomial's value is: %f",pn);
}
float multi(int m,float y)/*递归调用*/
{
if (m==0)
return(1);
if (m==1)
return(y);
if (m>1)
return( ( (2*m-1)*y*multi(m-1,y)-(m-1)*multi(m-2,y) )/m );
}
上面的程序,是实现勒让德多项式.可得不到正确结果,下面的可以,就是一个x的类型不同,高手指点下什么原因..
#include "stdio.h"
#include "math.h"
float multi();
main()
{
int n,x;
float pn;
scanf("%d,%d",&n,&x);/*输入x,n值*/
pn=multi(n,x);/*函数调用*/
printf("The multinomial's value is: %f",pn);
}
float multi(int m,int y)/*递归调用*/
{
if (m==0)
return(1);/*分不同的情况返回*/
if (m==1)
return(y);
if (m>1)
return( ( (2*m-1)*y*multi(m-1,y)-(m-1)*multi(m-2,y) )/m );
}
[此贴子已经被作者于2007-5-16 18:22:04编辑过]