// Programmrahmen zur Lösung der Aufgaben "Fibonacci-Zahlen" // #include // Berechnung von Fibonacci-Zahlen mit einem in Assembler geschriebenen rekursiven Algorithmus unsigned int fiborec(int); // Berechnung von Fibonacci-Zahlen mit einem in Assembler geschriebenen iterativen Algorithmus unsigned int fiboiter(int); unsigned int fiboreccache(int); unsigned int fiboitercache(int); unsigned int c_fiborec(int); unsigned int c_fiboiter(int); unsigned int c_fiboreccache(int); unsigned int c_fiboitercache(int); int main() { int n; int bis = 30; /* for ( n = 0; n <= bis ; n++ ) { printf("Fiborec %d: %d\n", n, fiborec(n)); } for ( n = 0; n <= bis ; n++ ) { printf("C-Fiborec %d: %d\n", n, c_fiborec(n)); } for ( n= 0; n <= bis ; n++ ) { printf("Fiboiter %d: %d\n", n, fiboiter(n)); } for ( n= 0; n <= bis ; n++ ) { printf("Fiboreccache %d: %d\n", n, fiboreccache(n)); } for ( n= 0; n <= bis ; n++ ) { printf("Fiboitercache %d: %d\n", n, fiboitercache(n)); } for ( n= 0; n <= bis ; n++ ) { printf("Fibrec_c %d: %d\n", n, c_fiborec(n)); } for ( n= 0; n <= bis ; n++ ) { printf("Fibiter_c %d: %d\n", n, c_fiboiter(n)); } */ n = 7; //groesstmoegliches Ergebniss bei int tic printf("Fiboiter %d: %u\n", n, fiboiter(n)); printf("Fiborec %d: %u\n", n, fiborec(n)); return 0; } unsigned int c_fiborec(int n) { if (n==0) return 0; if (n<=2) return 1; return c_fiborec(n-1) + c_fiborec(n-2); } unsigned int c_fiboiter(int n) { int a=0; int b=1; int neu; int x; for (x=1; x<=n; x++) { neu = a+b; a = b; b = neu; } return a; }