首页 > 试题广场 >

用递归方法求n阶勒让德多项式的值,递归公式为:

[问答题]
用递归方法求n阶勒让德多项式的值,递归公式为:


推荐

#include<stdio.h>

#define N 10

#define M 5

float score[N][M];

float a_stu[N],a_cour[M];

int r,c;


int main()

{int i,j;

float h;

float s_var(void);

float highest();

void input_stu(void);

void aver_stu(void);

void aver_cour(void);

input_stu();

aver_stu();

aver_cour();

printf("\n NO. courl cour2 cour3 cour4 cour5 aver\n”);

for(i=0;i<N;i++)

{printf("\n NO %2d",i+1);

for(j=0;j<M;j++)

printf("%8.2f",score[i][j]);

printf("%8.2f\n",a_stu[i]);

}

printf("\naverage:");

for(j=0;j<M;j++)

printf("%8.2f",a_cour[j]);

printf("\n');

h=highest();

printf("highest%7.2f  NO.%2d  course %2d\n",h,r, c);

printf("variance %8.2f\n",s_var());

return 0;

}


void input_stu(void)

{int i,j;

for(i=0;i<N;i++)

{printf("\ninput score of student%2d:\n",i+1);

for(j=0;j<M;j++)

scanf("%f",&score[i][j]);

}

}


void aver_stu(void)

{int i,j;

float s;

for (i=0;i<N;i++)

{for(j=0,s=0;j<M;j++)

s+=score[i][j]:

a_stu[i]=s/5.0;

}

}


void aver_cour(void)

{int i,j;

float s;

for(j=0;j<M;j++)

{s=0;

for(i=0;i<N;i++)

s+=score[i][j]:

a_cour[j]=s/(float)N;

}

}


float highest()

{foat high,

int i,j;

high=score[0][0];

for (i=0;i<N;i++)

for (j=0;j<M;j++)

if(score[i][j]>high)

{high=score[i][j]:

r=i+1;

c=j+1;

}

return(high);

}


float s_var(void)

{int i;

float sumx,sumxn;

sumx=0.0;

sumxn=0.0;

for (i=0;i<N;i++)

{sumx+=a_stu[i]*a_stu[i];

sumxn+=a_stu[i]:

}

return(sumx/N-(sumxn/N)*(sumxn/N));

}



发表于 2018-03-25 10:41:46 回复(1)
#include <iostream>
using namespace std;

float ler_rang_duo(int n, float x)
{
    if(n==0) return 1;
    if(n==1) return x;
    return ( (2*n-1)*x-ler_rang_duo(n-1,x) - (n-1)*ler_rang_duo(n-2,x) )*1.0/n;

}



int main()
{
    int n;
    float x;
    cout<<"请输入阶数n和变量x(空格隔开):";
    cin>>n>>x;


    cout<<"变量为:"<<x<<"第"<<n<<"阶的勒让德多项式的值:"<<ler_rang_duo(n,x)<<endl;
    return 0;
}
发表于 2020-03-10 16:04:14 回复(0)
#include<stdio.h>
int pn(int x, int n) {  if (n == 0) return 1;     
      else if (n == 1) return x;     
      else  return ((2*n -1)*x - pn(x, n -1)-(n -1)*pn(x, n -)/n;
}
int main() {  int x = 0;     
      int n = 0;     
      printf("请输入x和n的值:");     
      scanf("%d%d",&x,&n);     
      printf("%d", pn(x, n));     
      return 0;
}

编辑于 2023-03-18 15:52:12 回复(0)
#include <stdio.h>
int solut(int n,int x){
    if(n==0)return 1;
    else if(n==1)return x; 
    else return (((2*n-1)*x-solut(n-1,x)-(n-1)*solut(n-2,x))/n);
} 
int main(){
    int solut(int n,int x);
    int x,n;
    printf("please input n and x :");
    scanf("%d,%d",&n,&x);
    solut(n,x);
    printf("n阶勒让德多项式的值是:%d",solut(n,x));
    return 0;
}
编辑于 2020-04-26 21:36:07 回复(0)
#include <stdio.h>
double dlr(int x, int n){
 if(n == 0)
  return 1;
 else if(n == 1)
  return x;
 else{
  return ((2 * n - 1) * x - dlr(x, n - 1) - (n - 1) * dlr(x, n - 2)) / n;
 }
}
int main(){
 int x;
 int n;
 scanf("%d %d", &x, &n);
 printf("%.2lf\n", dlr(x,n));
}
发表于 2020-01-02 11:26:12 回复(0)