递归法求n阶勒让德多项式,Pn={1,n=0 x,n=1 ((2n-1)*x-Pn-1(x)-(n-1)*Pn-2(x))/n,n>=1 有问题

如题所述

第1个回答  2022-09-30

是2return(c)

递归公式

1 (n=0)

pn(x)=x (n=1)

((2n-1)xpn-1(x)-(n-1)pn-2(x))/n (n>1)

例如:

#include <stdio.h>

float p (int n,int x)

{

int f;

if(n<0)

{

f = -1;

printf("error, n should be larger than 0");

}

else if(n==0)

{

f = 1;

}

else if (n==1)

{

f = x;

}

else if (n>1)

{

f=((2*n-1)*x*p(n-1, x)-(n-1)*p(n-2,x))/n;

}

return f;

}

void main ()

{

int n,x;

printf("请输入n,x的值:");

scanf("%d%d",&n,&x);

printf("结果为:%d\n",p(n,x));

getchar();

}

扩展资料:

由于递归引起一系列的函数调用,并且可能会有一系列的重复计算,递归算法的执行效率相对较低。当某个递归算法能较方便地转换成递推算法时,通常按递推算法编写程序。

例如上例计算斐波那契数列的第n项的函数fib(n)应采用递推算法,即从斐波那契数列的前两项出发,逐次由前两项计算出下一项,直至计算出要求的第n项。

参考资料来源:百度百科-递归法

相似回答
大家正在搜