Probleme mit GNU MP
-
Hi,
folgendes Programm soll später einmal die Fibonacci-Folge bis zu einem sehr großen Zahlbereich bearbeiten:
#include <iostream> #include <gmp.h> #include <gmpxx.h> using namespace std; mpz_class fib (mpz_class n) { if (n == 2) return 1; else if (n == 1) return 1; else { return fib (n - 1) + fib (n - 2); } } int main () { for (int i = 0; i < 10; i++) { mpz_class n = i; cout << fib(n); } return 0; }Ich hab es mit der GNU MP Library gemacht. Leider bekomme ich als Ausgabe nur:
Segmentation faultDas gleiche Programm mit einer anderen int main gibt eine richtige Ausgabe:
int main () { cout << fib(10); return 0; }Das gibt richtigerweise 55 aus.
Wo liegt das Problem?
Vielen Dank
Joachim
-
Ich hab zwar keine Ahnung von GNU MP, aber wenn es dir nur darum geht, große Fibonacci-Zahlen zu berechnen. Dafür gibt es eine geschlossene Formel ohne Rekursion.
-
Der Fall fib(0); ist auch nicht abgefangen.
fib(0) = fib(0 - 1) + fib( 0 - 2)
mpz_class fib (mpz_class n) { if(n == 0) return 0; else if(n == 1) return 1; else { return fib(n - 1) + fib(n - 2); } }