Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Successione di Fibonacci

    Sono alle prime armi con php, e per capirci qualcosa ho cominciato con un esercizio "didattico":
    la successione di Fibonacci.

    I primi 2 elementi della successione sono 1, 1; ogni altro elemento è dato dalla somma dei due che lo precedono
    Chiamando F(n)
    la successione di Fibonacci, abbiamo la seguente definizione matematica:

    * F(1) = 1
    * F(2) = 1
    * F(n) = F(n-2)+F(n-1) per n = 3, 4, 5, ...

    per cui la sequenza di numeri sarà:
    1 1 2 3 5 8 13 21 34 55 89 144 233 377...

    il codice che ho creato funziona!!! ma credo proprio che possa essere scritto in una maniera più corretta, qualcuno sa farmi qualche esempio??

    <?php
    $moka = 1;
    $leon = 1;
    echo "$moka ";
    echo "$leon ";
    for ($i=0; $i<10; $i++)
    {
    $somma = $moka + $leon;
    $tot = $somma + ($somma - $moka);
    $moka = $somma;
    $leon = $tot;
    echo "$somma ";
    echo "$tot ";
    }
    ?>

    Penso sia codice abbastanza inutile, ma è un modo come altri per imparare a scrivere in php...

  2. #2
    Codice PHP:

    <?php
    function fibonacci($n){
     if(
    $n==or $n==2){
       return 
    1;
      }
      else{
       return 
    fibonacci($n-1)+fibonacci($n-2);
      }
    }
    ?>
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  3. #3
    Ok, ma non visualizzo niente...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    20
    prova:

    <?php

    echo fibonacci(n); //per n=1,2,3 ecc e cicla su echo se vuoi la lista

    function fibonacci($n){
    if($n==1 or $n==2){
    return 1;
    }
    else{
    return fibonacci($n-1)+fibonacci($n-2);
    }
    }
    ?>

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    La mia versione.
    Codice PHP:
    function fibonacci($lim) {
    for (
    $i=0;$i<=$lim;$i++) {
    $arr[] = ($i == || $i ==1) ? $arr[$i-1] + $arr[$i-2] ;
    }
    $str implode(',',$arr);
    return 
    $str;
    }

    echo 
    fibonacci(15); 

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    20
    It's better!!

  7. #7
    <?php
    function fibonacci($lim) {
    for ($i=0;$i<=$lim;$i++) {
    $arr[] = ($i == 0 || $i ==1) ? 1 : $arr[$i-1] + $arr[$i-2] ;
    }
    $str = implode(',',$arr);
    return $str;
    }

    echo fibonacci(15);
    ?>




    Effettivamente questo è il migliore!
    Ma sareste così gentili da farmi capire qualcosa di queste 2 stringhe?!?

    $arr[] = ($i == 0 || $i ==1) ? 1 : $arr[$i-1] + $arr[$i-2] ;

    $str = implode(',',$arr);

    mi sa che devo imparare un pò di sintassi...

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da vlad tepes bend
    <?php
    function fibonacci($lim) {
    for ($i=0;$i<=$lim;$i++) {

    }

    return $str;
    }

    echo fibonacci(15);
    ?>




    Effettivamente questo è il migliore!
    Ma sareste così gentili da farmi capire qualcosa di queste 2 stringhe?!?

    $arr[] = ($i == 0 || $i ==1) ? 1 : $arr[$i-1] + $arr[$i-2] ;

    $str = implode(',',$arr);

    mi sa che devo imparare un pò di sintassi...
    Praticamente metto tutto il contenuto dentro un array ($arr).
    Poi ho utilizzato l'operatore ternario. Se $i è uguale a 0 o a 1 (la condizione che sta subito dopo il punto di domanda) assegno all'array 1, in caso contrario (ciò che viene dopo i due punti) assegno ad $arr il valore di $arr in posizione i-1 + $arr in posizione i-2.
    In pratica è una forma contratta dell'if.

    implode serve per trasformare un array in stringa scegliendo un carattere come separatore (nel mio esempio la virgola).


  9. #9
    OK sei gentile e sei stato molto chiaro
    mi fai capire ancora perchè proprio la variabile $lim è l'argomento della funzione!?!?

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da vlad tepes bend
    OK sei gentile e sei stato molto chiaro
    mi fai capire ancora perchè proprio la variabile $lim è l'argomento della funzione!?!?
    In questo modo puoi di volta in volta stabilire il limite superiore della tua serie lasciando la funzione invariata, altrimenti dovresti modifiicare sempre il ciclo for.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.