勒让德递推函数C语言 求函数的勒让德级数展开

C语言用递归方法求n阶勒让德多项式的值代码:
#includelt;stdio.hgt;
#includelt;stdlib.hgt;
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(ngt;1)
y=((2*n-1)*x*polya(n-1,x)-(n-1)*polya(n-2,x))/n;
return y;
}
运行结果:
扩展资料:
return
C的关键字,它提供了终止函数执行的一种方式 。当return语句提供了一个值时,这个值就成为函数的返回值.
说到return,有必要提及主函数的定义,下面是从网络上找到的资料,好好消化吧,对了解主函数中返回值的理解有很大的帮助.
很多人甚至市面上的一些书籍,都使用了void main() , 其实这是错误的 。C/C中从来没有定义过void main() 。
C之父Bjarne Stroustrup在他的主页上的FAQ中明确地写着The definition void main(){/*...*/}is not and never has been C,
nor has it even been C.(void main()从来就不存在于C或者C) 。下面我分别说一下C和C标准中对main函数的定义 。
1.C
在C89中,main()是可以接受的 。Brian W.Kernighan和Dennis M.Ritchie的经典巨著The C programming Language 2e(《C程序设计语言第二版》)用的就是main() 。不过在最新的C99标准中,只有以下两种定义方式是正确的:
【勒让德递推函数C语言 求函数的勒让德级数展开】int main(void)
int main(int argc,char*argv[])
(参考资料:ISO/IEC 9899:1999(E)Programming languages—C 5.1.2.2.1 Program startup)
当然,我们也可以做一点小小的改动 。例如:char*argv[]可以写成char**argv;argv和argc可以改成别的变量名(如intval和charval),不过一定要符合变量的命名规则 。
如果不需要从命令行中获取参数 , 请用int main(void);否则请用int main(int argc,char*argv[]) 。
main函数的返回值类型必须是int,这样返回值才能传递给程序的激活者(如操作系统) 。
如果main函数的最后没有写return语句的话,C99规定编译器要自动在生成的目标文件中(如exe文件)加入return 0;,表示程序正常退出 。不过 , 我还是建议你最好在main函数的最后加上return语句,虽然没有这个必要,但这是一个好的习惯 。
注意,vc6不会在目标文件中加入return 0;,大概是因为vc6是98年的产品 , 所以才不支持这个特性 。现在明白我为什么建议你最好加上return语句了吧!不过,gcc3.2(Linux下的C编译器)会在生成的目标文件中加入return 0; 。
c语言应用递归函数求解N阶勒让德多项式你所贴程序中,函数p不是递归函数 。递归函数是自己调用自己,遇到结束条件后向前层层返回 。
double legendre(int n, int x)
{
if (n == 0) return 1; // 结束条件
if (n == 1) return x;
return ((2*n-1)*x - legendre(n-1,x) - (n-1)*legendre(n-2,x)) / n; // 递归,降阶
}
C语言勒让德多项式,输不出,不知道为什么勒让德
递推公式为:
polyn(x)=1
n=0
polyn(x)=x
n=1
polyn(x)=((2n-1)*x*polyn-1(x)-(n-1)*polyn-2(x))/n
n>1
你递推
函数
里if(n==1)k应该等于x,不是1.0
#include
stdio.h
void
print(float
a){
printf("%5.2f\n",a);
//你的
程序
里printf("%5.2\n",a);
5.2后面少了个f
}
float
p(
int
n,float
x){
static
float
k;
if(n==0){
k=0.0;
}
else
if(n==1)
k=x;
//这里把你的k=1.0改成了k=x;
else
k=((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n;
return(k);
}
int
main(){
int
a;
float
b;
printf("please
input
an
integer,a
real
number!\n");
while(1){
scanf("%d
%f",a,b);
print(p(a,b));
}
return
0;
//
main函数
是int
型,最好加个
返回值

}
关于勒让德递推函数C语言和求函数的勒让德级数展开的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读