Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Algoritmi - Sequenza di Fibonacci
Forum - Algoritmi - Sequenza di Fibonacci

Avatar
web_pirate (Normal User)
Rookie


Messaggi: 51
Iscritto: 27/12/2011

Segnala al moderatore
Postato alle 15:31
Venerdì, 26/10/2012
Ragazzi, per esercizio mi sono messo a creare un algoritmo che scriva i primi n numeri della sequenza di fibonacci nel minor numero di righe possibile, prendendo n da riga di comando. Come vi sembra questo tentativo? :D
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[]){
  4. int prox, cont=0, y;
  5. int j[2];
  6.  
  7. j[0]=(j[1]=cont)+1;
  8.  
  9.         for(y=0;y<atoi(argv[1]);y++){
  10.                 printf("%d\n", prox=j[0]+j[1]);
  11.                 j[0]=j[1];
  12.                 j[1]=prox;
  13.         }      
  14. }


PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:54
Sabato, 27/10/2012
Se devi solo scriverli, non ti serve un array, quindi j va eliminato. Ti servono solo due variabili:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[]){
  4.     int a = 0, b = 1, c;
  5.  
  6.     for(int y = 0; y < atoi(argv[1]); y++) {
  7.         printf("%d\n", b);
  8.         c = b;
  9.         b = a + b;
  10.         a = c;
  11.     }      
  12. }



In realtà si può anche fare di meglio, sotto l'ipotesi che gli operandi vengano considerati da sinistra verso destra (quindi il parser deve essere L-associativo):
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[]){
  4.     int a = 0, b = 1;
  5.  
  6.     for(int y = 0; y < atoi(argv[1]); y++) {
  7.         printf("%d\n", b);
  8.         b = a + (a = b);
  9.     }      
  10. }


PM Quote