[C语言]用递归法求n阶勒让德多项式 作者: Chuwen 时间: 2019-06-02 分类: C/C++ # 题目 > ## 用递归法求n阶勒让德多项式,递归公式为: ``` { 1 (n=0) Pn(x) = { x (n=1) { ((2n-1)*x-Pn-1(x)-(n-1)*On-2(x))/n (n>=1) ``` ![用递归法求n阶勒让德多项式,递归公式为][1] # 解题思路 1. 要求输入 n 和 x 的值 2. 输出 Pn(x) 的值 # C语言代码实现 ```c #include "stdio.h" int main(){ double legendre(double n, double x);//声名自定义的函数 legendre double n,x; printf("请输入n、x(空格隔开):"); scanf("%lf %lf", &n, &x); printf("结果:%lf", legendre(n, x)); return 0; } double legendre(double n, double x){ double s; if(n == 0){ s = 1; }else if(n == 1){ s = x; }else if(n > 1){ //使用递归 legendre(n-1.0, x)、legendre(n-2.0, x) s = ((2.0*n-1.0)*x-legendre(n-1.0, x)-(n-1.0)*legendre(n-2.0, x))/n; } return s; } ``` # 测试 > ## 输入 n 和 x 的值为:`2` 和 `2` > ## 预想返回结果:`1.5` ``` 请输入n、x(空格隔开):2 2 结果:1.500000 ``` [1]: https://cdn.nowtime.cc/2019/06/02/4033601759.jpg 标签: C, 递归算法