Ακολουθία fibonacci στη C++

Το θέμα είναι -πιστεύω- γνωστό: να υπολογιστούν οι όροι της ακολουθίας:

$$ a_n = a_{n-1} + a_{n-2}, a_0 = 1, a_1=1, n=2,3,4,\ldots $$

Εδώ δίνεται ένα πρόγραμμα που υπολογίζει Ν όρους της ακολουθίας, το Ν το δίνει ο χρήστης. Ωστόσο το πρόγραμμα υπολογίζει το πολύ 50 όρους, υπάρχει δηλαδή ένα όριο στο πλήθος των υπολογισμών.

#include <iostream>
#include <stdio.h>

#define NMAX 50
using namespace std;

int main()
{
    unsigned int i, N;
    unsigned int a[NMAX];
    a[0] = 0;
    a[1] = 1;
 
    cout << "How many fibonacci numbers (at least 2): " ; 
    cin >> N;

    if (N > 2)
    {
        printf("---------------------\n");
        printf("     n           a(n)\n");
        printf("---------------------\n");
        printf ("%6d %14d\n", i, a[i]);
        ++i;
        printf ("%6d %14d\n", i, a[i]);
           
        for (i=2; i < N; i++)
        {
            a[i] = a[i-1] + a[i-2];
            printf ("%6u %14u\n", i, a[i]);
            if (i>=NMAX)
                break;
        }
    }
    else
    {
        cout << "Aaah : " << N << " is too small" << endl;
    }      
    
    return 0;
}

Μεταγλώτιση και δοκιμαστική εκτέλεση:

astavrak@apollonia:~$ g++ program.cpp
astavrak@apollonia:~$ ./a.out 
How many fibonacci numbers (at least 2): 7
---------------------
     n           a(n)
---------------------
     0              0
     1              1
     2              1
     3              2
     4              3
     5              5
     6              8

Συνδεθείτε για περισσότερες δυνατότητες αλληλεπίδρασης,
σχολιασμοί, εξωτερικοί σύνδεσμοι, βοήθεια, ψηφοφορίες, αρχεία, κτλ.

Creative Commons License
Εκπαιδευτικό υλικό από τον Αθανάσιο Σταυρακούδη σας παρέχετε κάτω από την άδεια Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License.
Σας παρακαλώ να ενημερωθείτε για κάποιους επιπλέον περιορισμούς
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=401.