C语言习题 求n阶勒让德多项式

C语言习题 求n阶勒让德多项式

时间: 1ms        内存:128M

描述:

用递归方法求n阶勒让德多项式的值,递归公式为
n=0     pn(x) =1  
n=1     pn(x) =x
n>1     pn(x) =((2n-1)*x* pn-1(x) -(n-1)* pn-2(x))/n
结果保留2位小数。

输入:

n和x的值。

输出:

pn(x)的值。

示例输入:

2 2

示例输出:

5.50

提示:

参考答案(内存最优[748]):

#include <stdio.h>
float polya(int n,int x)
{
	if (n==0)
		return(1);
	else if (n==1)
		return(x);
	else
		return(((2*n-1)*x*polya((n-1),x)-(n-1)*polya((n-2),x))/n);
}
int main() 
{
	int x,n;
	scanf("%d%d",&n,&x);
	printf("%.2f\n",polya(n,x));
	return 0;
}

参考答案(时间最优[0]):

#include <stdio.h>
float polya(int n,int x)
{
	if (n==0)
		return(1);
	else if (n==1)
		return(x);
	else
		return(((2*n-1)*x*polya((n-1),x)-(n-1)*polya((n-2),x))/n);
}
int main() 
{
	int x,n;
	scanf("%d%d",&n,&x);
	printf("%.2f\n",polya(n,x));
	return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注