C :: Aufgabe #122
1 Lösung

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
Wikipedie, Leibnitz-Reihe
Lösungen:

/******************************* * 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; }