rekursion berechnen, werte stimmen nicht.



  • hallo,
    ich will zu folgender formel werte von 0 bis 40 rekursiv berechnen:
    I(n)=1/pi - (n(n-1)/pi^2)*I(n-2) , n>=2,
    mit I(0) = 2/pi, I(1) = 1/pi

    dazu habe ich folgendes programm geschrieben:

    #include <math.h>
    #include <stdio.h>
    
    double integral (int n)
    {
      if(n==0) {
        return 2./3.14;
      }
      if(n==1) return 1./3.14;
      if(n>1) {
        return  (1./3.14 - (n*(n-1))/(3.14*3.14) * integral(n-2));
      }
    }
    
    int main()
    {
      int c=0;
      double vektor [41];
      for(c=0; c<41; c++){
        vektor [c] = integral(c);
      }
      for(c=0; c<41; c++){
        printf("%d\t%f\n", c, vektor [c]);
      }
    
     return 0;
    }
    

    die ersten werte sind ja noch ok, aber so ab n=10 kommt da nur noch müll raus.
    ich schaue jetzt schon eine halbe ewigkeit auf die paar zeilen code, aber finde keinen fehler.
    wer kann helfen?

    thx

    CU



  • Schuß ins Blaue: Ersetz mal 3.14 durch eine etwas genauere Version von Pi. 3.1415926535897932384626433832795029L z.b.



  • hui, das sieht schon viel besser aus. hätte ich nicht gedacht.
    danke!


Anmelden zum Antworten