Η ακολουθία Fibonacci - Εξηγείται σε Python, JavaScript, C ++, Java και Swift

Η ακολουθία Fibonacci είναι, εξ ορισμού, η ακέραια ακολουθία στην οποία κάθε αριθμός μετά τα δύο πρώτα είναι το άθροισμα των δύο προηγούμενων αριθμών. Για απλοποίηση:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,…

Έχει πολλές εφαρμογές στα μαθηματικά και ακόμη και τις συναλλαγές (ναι, το διαβάζετε σωστά: διαπραγμάτευση), αλλά αυτό δεν είναι το σημείο αυτού του άρθρου. Στόχος μου σήμερα είναι να σας δείξω πώς μπορείτε να υπολογίσετε οποιονδήποτε όρο αυτής της σειράς αριθμών σε πέντε διαφορετικές γλώσσες προγραμματισμού χρησιμοποιώντας αναδρομικές συναρτήσεις.

Αναδρομικές συναρτήσεις είναι εκείνες οι λειτουργίες που, βασικά, αποκαλούνται.

Θέλω να σημειώσω ότι αυτή δεν είναι η καλύτερη μέθοδος για να το κάνω - στην πραγματικότητα, θα μπορούσε να θεωρηθεί η πιο βασική μέθοδος για αυτόν τον σκοπό. Αυτό συμβαίνει επειδή η υπολογιστική ισχύς που απαιτείται για τον υπολογισμό μεγαλύτερων όρων της σειράς είναι τεράστια. Ο αριθμός των φορών που καλείται η λειτουργία προκαλεί υπερχείλιση στοίβας στις περισσότερες γλώσσες.

Ωστόσο, για τους σκοπούς αυτού του σεμιναρίου, ας ξεκινήσουμε.

Πρώτα απ 'όλα, ας σκεφτούμε πώς θα μοιάζει ο κώδικας. Θα περιλαμβάνει:

· Μια αναδρομική συνάρτηση F (F για Fibonacci): για τον υπολογισμό της τιμής του επόμενου όρου.

· Τίποτα άλλο: σας προειδοποίησα ότι ήταν αρκετά βασικό.

Η λειτουργία μας θα λάβει n ως είσοδο, η οποία θα αναφέρεται στον ν ο όρο της ακολουθίας που θέλουμε να υπολογιστεί. Έτσι, το F (4) πρέπει να επιστρέψει τον τέταρτο όρο της ακολουθίας.

Ας το σχεδιάσουμε. Ο κωδικός θα πρέπει, ανεξάρτητα από τη γλώσσα, να έχει την εξής μορφή:

function F(n)  if n = 0

   return 0  if n = 1

   return 1  else

   return F(n-1) + F(n-2)

Σημείωση: ο όρος 0 της ακολουθίας θα θεωρείται 0, οπότε ο πρώτος όρος θα είναι 1. το δεύτερο, 1; το τρίτο, 2; και ούτω καθεξής. Το κατάλαβες.

Ας αναλύσουμε τη λειτουργία για μια στιγμή. Εάν παίρνει 0 ως είσοδο, επιστρέφει 0. Εάν πάρει 1, επιστρέφει 1. Εάν πάρει 2… Λοιπόν, σε αυτή την περίπτωση εμπίπτει στην άλλη δήλωση, η οποία θα καλέσει τη συνάρτηση ξανά για τους όρους 2–1 ( 1) και 2–2 (0). Αυτό θα επιστρέψει 1 και 0, και θα προστεθούν τα δύο αποτελέσματα, επιστρέφοντας 1. Τέλεια.

Τώρα μπορείτε να δείτε γιατί οι αναδρομικές συναρτήσεις αποτελούν πρόβλημα σε ορισμένες περιπτώσεις. Φανταστείτε ότι θέλατε τον 100ο όρο της ακολουθίας. Η συνάρτηση θα καλούσε τον εαυτό της για το 99ο και το 98ο, το οποίο θα αποκαλούσαν ξανά τη συνάρτηση για τον 98ο και τον 97ο, και τον 97ο και τον 96ο όρο… και ούτω καθεξής. Θα ήταν πολύ αργό.

Αλλά τα καλά νέα είναι ότι λειτουργεί πραγματικά!

Ας ξεκινήσουμε λοιπόν με τις διαφορετικές γλώσσες. Δεν θα δώσω πάρα πολλές λεπτομέρειες (στην πραγματικότητα, καμία λεπτομέρεια) για να βελτιώσω την εμπειρία ανάγνωσής σας. Τέλος πάντων, δεν υπάρχουν πολλές λεπτομέρειες.

Ας πηδήσουμε σε αυτό:

Πύθων

def F(n):  if n == 0:

   return 0  if n == 1:

   return 1  else:

   return F(n-1) + F(n-2)

Ταχύς

func F(_ n: Int) -> Int {  if n == 0 {    return 0

 }  if n == 1 {    return 1

 }  else {    return F(n-1) + F(n-2)

 }}

JavaScript

function F(n) {  if(n == 0) {    return 0;

 }  if(n == 1) {    return 1;

 }  else {    return F(n-1) + F(n-2);

 }}

Ιάβα

public static int F(int n) {  if(n == 0) {    return 0;

 }  if(n == 1) {    return 1;

 }  else {    return F(n-1) + F(n-2);

 }}

C ++

int F(int n) {  if(n == 0) {    return 0;

 }  if(n == 1) {    return 1;

 }  else {    return F(n-1) + F(n-2);

 }}

Και αυτό είναι. Επέλεξα αυτές τις γλώσσες με βάση τη δημοτικότητα - ή τουλάχιστον επειδή αυτές οι 5 είναι οι πιο συνηθισμένες που χρησιμοποιώ. Δεν έχουν συγκεκριμένη σειρά. Θα μπορούσαν να ταξινομηθούν κατά συντακτική δυσκολία, κατά τη γνώμη μου, από Python (ευκολότερο) έως C ++ (πιο δύσκολο). Αλλά αυτό εξαρτάται από την προσωπική σας γνώμη και την εμπειρία σας με κάθε γλώσσα.

Ελπίζω να σας άρεσε αυτό το άρθρο και, εάν έχετε οποιεσδήποτε ερωτήσεις / προτάσεις ή απλώς θέλετε να πείτε γεια, σχολιάστε παρακάτω!