无法弄清楚为什么输出错误

时间:2020-03-27 17:08:31

标签: c algorithm function recursion

因此,我一直在研究递归函数,并一直尝试使用它们编写代码。这是我的勒让德多项式代码。

该函数使用以下公式: P(n)=((2n-1)/ n)P(n-1)-((n-1)/ n)* P(n-2)

基于x = 0.5和n = 5的输入,我想要的输出是:

x=0.500000 n=1 P(1)=0.500000
x=0.500000 n=2 P(2)=0.250000
x=0.500000 n=3 P(3)=0.083333
x=0.500000 n=4 P(4)=-0.041667
x=0.500000 n=5 P(5)=-0.141667

但我不断得到以下输出:

x=0.500000               n=1                              P(1)=0.000000
x=0.500000               n=2                              P(2)=-0.500000
x=0.500000               n=3                              P(3)=-0.833333
x=0.500000               n=4                              P(4)=-1.083333
x=0.500000               n=5                              P(5)=-1.283333

我似乎无法弄清楚问题所在。我试图在函数中重新编写公式。也许与for循环有关?

#include <stdio.h>

float Legen_Poly(n,x){
if (n==0)
    return 1;
else if (n==1)
    return x;
else{
    return ((2*n-1)*Legen_Poly(n-1,x)-(n-1)*Legen_Poly(n-2,x))/n;
}}

int main(){
  float x ,a;
  int cntrl_val=0,n;


while(cntrl_val==0){
printf("\nPlease enter x [-1,1]: ");
scanf("%f",&x);
if (x>1 || x<-1)
  printf("\nThis x value is not valid!");

else{
  printf("\nPlease enter n= ");
  scanf("%d",&n);
  if (n<0)
    printf("\nThis n value is not valid!");
  else
    cntrl_val=1;
    printf("\nThe first %d are as follows",n);
    for(int count=0;count<n;count++){
      a=Legen_Poly(1+count,x);
      printf("\nx=%f",x);printf("               n=%d",1+count);printf("                              P(%d)=%f",1+count,a);

    }}}}

0 个答案:

没有答案