C语言 用递归法求n阶勒让德多项式的值
define语句末尾不要加分号
成都创新互联主营平塘网站建设的网络公司,主营网站建设方案,重庆App定制开发,平塘h5微信小程序开发搭建,平塘网站营销推广欢迎平塘等地区企业咨询
if(n=1)
m=((2*n-1)*x-P(n-1)-(n-1)*P(n-2))/n;
改成
if(n1) //==1是第二种情况写过了
m=((2*n-1)*x*P(n-1)-(n-1)*P(n-2))/n; //-改成*
n都没赋值就用了啊。。。
正确代码如下:
#includestdio.h
main()
{
#define x 2
int n=10;
float P(int n);
float c;
c=P(n);
printf("%f",c);
}
float P(int n)
{
float m;
if(n==0)m=1;
if(n==1)m=x;
if(n1)
m=((2*n-1)*x*P(n-1)-(n-1)*P(n-2))/n;
return m;
}
c++用递归函数实现勒让德多项式。
#includeiostream
using namespace std;
double pnx(int ,double);
int main(){
double n,x;
cout"请输入n(整数),x"endl;
cinnx;
cout"Pnx(n,x)="pnx(n,x)endl;
return 0;
}
double pnx(int n,double x){
if(n==0) return 1.0;
if(n==1) return x;
return ((2*n-1)*x*pnx(n-1,x)-(n-1)*pnx(n-2,x))/n;
}
所谓递归就自己调用自己,再无其他
C语言用递归方法求n阶勒让德多项式的值
#includestdio.h
float myfunction(int n,int x)
{
if(0==n)
{
return 1;
}
if(1==n)
{
return x;
}
else
{
return (2*n-1)*x-myfunction(n-1,x)-(n-2)*myfunction(n-2,x)/n; //主要问题出在这里,2x 要写成2*x,还有你仔细看看就知道了
}
} //这里加括号
void main()
{
int n,x;
float result;
printf("please imput n,x");
scanf("%d,%d",n,x);
result=myfunction(n,x);
printf("the result is:%f\n",result);
}
当前文章:c语言用循环做勒让德函数 c语言利用循环求自然数e
链接分享:http://lswzjz.com/article/doscojh.html