Napisałem takie algorytmy sprawdzające czy liczba należy do ciągu Fibonacciego. MAX_N ograniczyłem do 50(liczba obrotów pętli),
lecz pani profesor stwierdziła że algorytmy te muszą kończyć się kiedy zostanie wykryte że liczba jest fibo(bądź nie) . Proszę o poprawę algorytmów. Bo ja już pomysłu nie mam jak to powinno być:)
a. Na prostych zmiennych
bool isInFibVar(int x)
{
if (x == 0 || x == 1) return true;
int f0 = 0, f1 = 1, fn;
for (int i = 2; i <= MAX_N; i++)
{
fn = f0 + f1;
if (fn == x) return true;
f0 = f1;
f1 = fn;
}
return false;
}
b) Na tablicy
bool isInFibTab(int x)
{
if (x == 0 || x == 1) return true;
int tab[MAX_N+1] = {0, 1};
for (int i = 2; i <= MAX_N; i++)
{
tab[i] = tab[i-1] + tab[i-2];
if (tab[i] == x) return true;
}
return false;
}