作者:夏晓林
时间:2016.11
题目描述:
用递归方法求n阶勒让德多项式的值,递归公式为
n=0 p
n(x) =1
n(x) =1
n=1 p
n(x) =x
n(x) =x
n>1 p
n(x) =((2n-1)*x* p
n-1(x) -(n-1)* p
n-2(x))/n
n(x) =((2n-1)*x* p
n-1(x) -(n-1)* p
n-2(x))/n
结果保留2位小数。
问题及代码:
#include <stdio.h>
#include <stdlib.h>
double polya(n,x);
int main()
{
int x,n;
scanf("%d%d",&n,&x);
printf("%.2f\n",polya(n,x));
return 0;
}
double polya(int n,int x)
{
double y;
if(n==0)
y=1;
if(n==1)
y=x;
if(n>1)
y=((2*n-1)*x*polya(n-1,x)-(n-1)*polya(n-2,x))/n;
return y;
}
运行结果:
学习心得:
一开始直接将公式粘贴过来,提示错误error: invalid suffix “n” on integer constant,问问度娘才知道,意思是整形常量后加上了无效后缀n,才知道是2n之间没写*,改为2*n之后就对了。
版权声明:本文为yandaxiaxiaolin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。