原创 闫小林 C语言入门到精通 1月29日

收录于话题

#C语言实战练习

103个

“要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一”

——包租婆
这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。那么如何学习呢?当然是每天都练习一道C语言题目!!

C语言 | 递归求勒让德多项式_C语言


作者

闫小林

白天搬砖,晚上做梦。我有故事,你有酒么?


例72:C语言编程用递归方法求n阶勒让德多项式。
解题思路:勒让德多项式是描述矩形表面和口径的另外一组多项式集合,它的优点是具有正交性。由于存在正交性条件,高阶项系数趋于零,并且增加和删除一个项对其他项没有影响。

勒让德方程的解可写成标准的幂级数形式。当方程满足 |x| < 1 时,可得到有界解(即解级数收敛)。并且当n 为非负整数,即n = 0, 1, 2,... 时,在x = ± 1 点亦有有界解。这种情况下,随n 值变化方程的解相应变化,构成一组由正交多项式组成的多项式序列,这组多项式称为勒让德多项式


源代码演示:

#include<stdio.h>//头文件 
int main()//主函数 
{
  int temp,num;//定义整型变量 
  float num_Polynomial;//定义浮点型变量 
  float polynomial(int,int);//函数声明 
  printf("输入num & temp:");//提示语句 
  scanf("%d,%d",&num,&temp);//键盘输入 
  num_Polynomial=polynomial(num,temp); //求值 
  printf("Polynomial=%6.2f\n",num_Polynomial);//输出结果 
  return 0;//主函数返回值为0 
}
float polynomial(int number,int x)//自定义函数 
{
  if(number==0)//if语句判断number符合哪一个条件 
  { 
    return(1);
  }
  else if(number==1)
  {
    return(x);
  }
  else
  {
    return(2*number-1)*x*polynomial((number-1),x)-(number-1)*polynomial((number-2),x)/number;
  }
}

编译运行结果如下:

输入num & temp:5,5
Polynomial=2924185.75

--------------------------------
Process exited after 4.81 seconds with return value 0
请按任意键继续. . .