C++用递归方法求n阶勒让德多项式
答案:2 悬赏:0
解决时间 2021-02-21 16:10
- 提问者网友:挣扎重来
- 2021-02-20 20:31
这是我的答案 但是是错误
#include
using namespace std;
int main()
{
double Pn(double,double);
double sum,n,x;
cin>>n>>x;
sum=Pn(n,x);
cout< return 0;
}
double Pn(double n,double x)
{
double sum;
if(n==0)
{
sum=1;
}
else if(n==1)
{
sum=x;
}
else
{
sum=((2*n-1)*x-Pn((n-1),x)-(n-1)*Pn((n-2),x))/n;
}
return sum;
}
最佳答案
- 二级知识专家网友:狙击你的心
- 2021-02-20 21:05
程序代码没什么问题,如果说有问题,就是参数n应该是整型,其他没有问题。
全部回答
- 1楼网友:放肆的依賴
- 2021-02-20 21:38
根据上面的表达式,我们知道了n = 0,n = 1的表达式的值。让n >= 1是,它会产生递归调用,因此我们能很快的写出程序,代码如下:
#include
float myfunction(int,int);
int main(int argc, char *argv[])
{
int n,x;
float result;
printf("please inputa n,x:");
scanf("%d,%d",&n,&x);
result = myfunction(n,x);
printf("the result is : %f",result);
system("pause");
return 0;
}
float myfunction(int n,int x)
{
if (0 == n)
{
return 1;
}
else if (1 == n)
{
return x;
}
else
{
return ((2 * n - 1) * x - myfunction(n - 1 , x) - (n - 1) * myfunction(n - 2, x)) / n;
}
}
我要举报
大家都在看
推荐资讯