C语言之函数调用13—递归法求N阶勒让德多项式的值

//递归法!

/*

=======================================================

n阶勒让德多项式,n=1时,Pn(x)=x;n>=1时,

Pn(x)=((2n-1)x-Pn-1(x)-(n-1)Pn-2(x))/2。

=======================================================

*/

#include <stdio.h>

#include <math.h>

double p(int n,double x)

{

if(n==0)

return 1;         //这一步非常关键!

if(n==1)

return x;

else

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

}

void main()

{

int n;

double x,q;

printf("n=");

scanf("%d",&n);

printf("x=");

scanf("%lf",&x);

q=p(n,x);

printf("p(%d,%.2lf)=%.2f\n",n,x,q);

}

/*

=======================================================

评:关键在于导出n=0时,P=1;否则答案不完整!

=======================================================

*/

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-21 00:12:39

C语言之函数调用13—递归法求N阶勒让德多项式的值的相关文章

8.13 用递归方法求n阶勒让德多项式的值

#include <stdio.h> int main(){ double n,x,y; double p(double n,double x); printf("input n,x(n>=0):\n"); scanf("%lf,%lf",&n,&x); //方程pn(x) y=p(n,x); printf("the result is %lf\n",y); } double p(double n,double

C语言之函数调用11—递归法求Hermite函数

/*递归法! ========================================== 题目: Hermite 函数:输入n.x,求Hn(x)? H0(x)=1; H1(x)=2*x; Hn(x)=2*x*Hn-1(x)-2*(n-1)Hn-2(x); ========================================== */ #include<stdio.h> float H(int n,int x) { if(n==0) return 1; if(n==1) r

C语言之函数调用12—递归法求阿克曼函数

//递归法! /* =========================================== 题目:编写阿克曼函数的递归函数程序! A(m,n)= n+1                (m=0) A(m-1,1)       (m=0) A(m-1,A(m,n-1))            (m!=0,n!=0) =========================================== */ #include<stdio.h> int A(int m,int n)

OJ刷题之《求n阶勒让德多项式》

题目描述 用递归方法求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 提示 主函数已给定如下,提交时不需要包含下述主函数 /* C代码 */ int main() { int x,n; scanf("%d%d",&

C语言之函数调用17—递归法之一般函数的调用(2)

//递归法 /* ================================================================== 题目:求F(60),其中F(n)定义如下: F(0)=0; F(1)=1; F(2n)=f(n)+3; F(2n+1)=F(n)+F(2n-1). ================================================================== */ #include<stdio.h> double F(in

C语言之函数调用17—递归法之中的一个般函数的调用(2)

//递归法 /* ================================================================== 题目:求F(60),当中F(n)定义例如以下: F(0)=0; F(1)=1; F(2n)=f(n)+3; F(2n+1)=F(n)+F(2n-1). ================================================================== */ #include<stdio.h> double F(

C语言之函数调用14—递归法打印勒让德多项式前N项

//递归法 /* ================================================================== 题目:勒让德多项式 ================================================================== */ #include <stdio.h> double p(int n,double x) { if(n==0)return 1.0; else if(n==1)return x; else

C语言之函数调用16—递归法之一般函数的调用

//递归法 /* ================================================================== 题目:F(x,1)=1 F(x,n)=F(2x+1,n-1)*x  (n>1) ================================================================== */ #include<stdio.h> double F(float x,int n) { if(n==1) return

P219 用递归方法求n阶勒让德多项式

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