Proszę zwrócić uwagę, że wprowadzam na początku kodu zmienne globalne. Dlaczego w fib2() za każdym razem wypluje mi program 1?
Przy okazji spytam, jak potem sprawdzić czas wykonania obu funkcji dla odpowiednio dużego n?
#include <stdio.h>
#include <stdlib.h>
int i;
int n;
long int fib(); /* rekurencyjna */
long int fib2(); /* iteracyjna */
int main()
{
printf("Ktory element ciagu obliczyc?\n");
scanf("%d", &n);
return 0;
}
long int fib() /* rekurencyjna */
{
if (n == 1 || n == 2)
return 1;
else
return fib(n-1)+fib(n-2);
}
long int fib2() /* iteracyjna */
{
if (n == 1 || n == 2)
return 1;
else {
int f1=1; /* pierwsza zmienna */
int f2=1; /* druga zmienna */
int temp; /* zmienna pomocnicza */
for(i = 3; i <= n; i++){
temp = f1 + f2;
f1 = f2;
}
printf("%d elementem ciagu Fibonacciego jest %d\n", n, f2);
}
return 0;
}