Rekursive C Funktion



  • Hallo Forum,

    ich habe ein Problem mit einer Aufgabe.

    Ich soll eine rekursive Funktion schreiben,

    die

    s= 1+x+x2/2+x3/3+...+x^n/n

    berechne.

    Bis jetzt habe ich das hier:

    #include<stdio.h>
    double berechnung (double x,int n);
    void main (void){
    
    	int n;
    	double x,s;
    	n=5;x=2;
    /*
    	printf("\nGib n ein: \n");
    	fflush(stdout);
    	scanf("%i",&n);
    	printf("\nGib x ein: \n");
    	fflush(stdout);
    	scanf("%lf",&x);
    */
    	s=berechnung(x,n);
    
    	printf("\ns=%lf",s);
    }
    
    double berechnung (double x,int n){
    
    	double s;
    
    	if(n>=1){
    		s= (x*berechnung(x,n-1));
    		return s;
    	}
    	else
    		return 1;
    
    }
    

    aber das /n bekomme ich nicht hin.

    Kann jemand helfen bzw. tipps geben.

    Grüße
    Lorenz



  • Und das plus anscheinend auch nicht.

    So vielleicht (ungetestet):

    double berechnung(double x,int n)
    {
      if (n==0)
        return 1;
      else
        return pow(x,n)/n + berechnung(x,n-1);
    }
    

    Auch ist es sicherlich nicht der einzige Weg. Wenn man sich eine Hilfsfunktion definiert, die mehr Parameter zulaesst, dann kann man sich auch die pow-Funktion (math.h inkludieren und gegen libm.so linken) sparen.

    void main (void)
    

    Manche wuerden dir dafuer bestimt den Kopf abreissen.



  • So lert es unser Professor an der Hochschule 😉

    Danke ich probiere es nacher aus, vielleicht kommen noch rück fragen.

    Grüße


Anmelden zum Antworten