Ακολουθία 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

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

Αναζήτηση στο google.com για παρόμοια θέματα

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

Αν επιθυμείτε μπορείτε να κάνετε μια δωρεά στον ιστότοπο