C :: Aufgabe #122

1 Lösung Lösung öffentlich

Leibnitz-Reihe rekursiv, endrekursiv und iterativ für die Annäherung von Pi

Anfänger - C von ah3n0bar6us - 16.07.2016 um 19:40 Uhr
Schreibe drei Programme zur Annäherung an die Zahl Pi mit Hilfe der Leibnitz Formel rekursiv, endrekursiv und iterativ für die Eingabe einer positiven natürlichen Zahl.

Wikipedie, Leibnitz-Reihe

Lösungen:

vote_ok
von devnull (8870 Punkte) - 10.04.2017 um 17:58 Uhr
Quellcode ausblenden C-Code
/*******************************
 * lr.c     Leibniz-Reihe
 *******************************/
#include <stdio.h>

double LR_iter(int max) {
    double sum = 1.0;
    double val;
    int sign = -1;
    int k;

    for (k=1; k<=max; k++) {
		val = 1.0/(2*k+1)*sign;
		printf("iterativ     Index %2d: %18.15f\n", k, val);
        sum += val;
        sign = -sign;
    }
    return sum;
}

double LR_recur(int index) {
	double sum, val;
    int sign;
    
    if (index > 0) {
		sign = (index%2)?-1:1;
		val  = 1.0/(2*index+1)*sign;
		sum  = LR_recur(index-1);
		printf("rekursiv     Index %2d: %18.15f\n", index, val);
        return sum + val;
    } 
    else {
		printf("rekursiv     Index  0:  1.0\n");
        return 1.0;
	}
}

double LR_endrecur(double *sum, int index) {
	double val;
    int sign;
    
    if (index == 0) {
		printf("endrekursiv  Index  0:  1.0\n");
		*sum += 1.0;
		return *sum;
    } 
    else {
        sign = (index%2)?-1:1;
        val = 1.0/(2*index+1)*sign;
        *sum += val;
		printf("endrekursiv  Index %2d: %18.15f\n", index, val);
        return LR_endrecur(sum, index-1);
	}
}

int main() {
	double sum;
    int max;

    printf("Endindex: ");
    scanf( "%d", &max );
    printf("Pi-Näherung iterativ : %.15f\n\n", 4.0*LR_iter(max));
    printf("Pi-Näherung rekursiv : %.15f\n\n", 4.0*LR_recur(max));
    printf("Pi-Näherung endrekursiv : %.15f\n", 4.0*LR_endrecur(&sum, max));

    return 0;
}
1801011

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.