Rzeczywiście, propozycja RemigiuszWaleska sprawia że kod jest zarówno bardziej użyteczny jak i przejrzysty. Dziękuję Ci za nią, bo niewątpliwie przyda mi się to w przyszłości, jednak nie o to chodziło mi gdy zadawałem pytanie. Chcę znaleźć wyjaśnienie zjawiska które zaobserwowałem, żeby lepiej zrozumieć środowisko i działanie systemu operacyjnego.
Wróćmy do pierwotnego kodu. Zaznaczę raz jeszcze:
-Z założenia miał być w stanie wygenerować maksymalnie 20 liczb - tak chciałem;
-Robi to poprawinie dla wszystkich wartości n z przedziału <0, 20>, czyli jeżeli zada się liczbe 7 - generuje 7 wyrazów, analogicznie dla 0, 5, 12, 20 i każdej innej z przedziału. Nie ma więc problemu z rodzajem nierówności o której mówicie, o czym można się przekonać uruchamiając kod. (przypominam że wyraz nr 1 ma w tabeli index 0 i tak dalej)
W swoim tutorialu pan Mirosław mówił, że przy próbie odwołania się do przestrzeni adresowej nam nie przypisanej to program jest ubijany przez planistę systemu.
Np. Jeżeli wpiszemy wartość n większą od 20 to może to zajsć w linijce:
fib[i]=fib[i-1]+fib[i-2];
przy i=20.
Pan MIrosław zaznacza też że jeżeli dana przetrzeń adresowa nie jest obecnie zajęta, to system może nam ją przydzielić i program powinien zadziałać - widocznie tak się dzieje przy i=20 kiedy chcemy wpisać do tabeli wartość o indexie 20, a więc dwudziestą pierwszą z kolei!
Jednak w kolejnych iteracjach nie dzieje się ani jedno ani drugie - program nie zawiesza się, ale też nie wypisuje kolejnych wyrazów.