Salta al contenuto

Successione di Fibonacci in php

7 ottobre 2007
tags: ,

Lo dovevo fare per domani, come compito per casa di informatica. In realtà avrei potuto scriverlo in pseudo-codifica, ma così ho potuto anche testarlo.

Questo è il primo file, index.html.

In realtà il codice non è completo per essere validato, però funziona.

Il file del programma invece è fibonacci.php.

Ecco qui, il programma controlla anche il numero che viene inserito, in modo che sia a prova di scemo…

Provatelo e ditemi che ne pensate.

Aggiornamento: Accidenti, non avrei mai pensato una cosa del genere! Senza ricorsione è molto più veloce.

Ora lo inserisco nel quaderno, intanto eccovi il nuovo codice.

20 commenti Lascia un →
  1. xmario permalink
    7 ottobre 2007 12:35 pm

    uhm, attento alla lunghezza, che se metto 9999999999999999999999999999999999999999

    non so poi che succeda xD

    (di default dopo 30 secondi lo script viene stoppato

  2. 7 ottobre 2007 12:50 pm

    Non succede niente… Si stoppa e basta. :-D

  3. 7 ottobre 2007 12:59 pm

    che bello ti insegnano il php? mannaggia a me che ho fatto il liceo e all’uni niente php :(
    Visto che ci sono ti faccio qualche domanda (tieni conto che non conosco il php):
    1- perché scrivi $_GET['quanti'] -1, ovvero perché sottrai 1?
    2- al di là dell’eleganza della funziona ricorsiva, così facendo devi fare un ciclo while che ogni volta esegue una call ad una ricorsiva. U po’ troppo dispendioso, non credi? Io avrei fatto un normale ciclo for o while che calcola il numero della serie e lo stampa subito, evitando così di allocare ogni volta la chiamata alla ricorsiva molto più pesante di un ciclo.

    Ciao

  4. 7 ottobre 2007 1:01 pm

    bravo! il codice è abbastanza pulito ;)
    Se vuoi un consiglio, impara fin da adesso a dare dei nomi significativi alle funzioni e alle variabili, così quando scriverai programmi più grandi ti verrà naturale. Ad esempio la funzione a() dovrebbe essere qualcosa come stampa_successione_fib(). gli iteratori vanno benissimo come $i o $n, perchè è intuitiva la loro funzione. Se prendi l’abitudine a scrivere il tuo codice con queste piccole accortezze non avrai “quasi” bisogno di usare commenti (soltanto poche righe all’inizio di ogni funzione) e potrai scrivere con poco sforzo anche programmi complessi.
    Ciao e a presto! ^_^

  5. 7 ottobre 2007 1:04 pm

    PS: quello che dice Paso è giusto… ma avrai tempo e modo per capire e padroneggiare concetti come “complessità computazionale” ed efficienza algoritmica.

  6. 7 ottobre 2007 1:11 pm

    @ Paso, non ci insegnano php. L’ho scritto in php per testarlo. Per la ricorsiva, è più facile farla così. Dopo proverò anche senza, ma entrano in gioco molte più variabili.
    Tolgo 1 perché a scuola abbiamo chiamato il primo valore a(0), il secondo a(1) e così via.
    @ TheKaneB, lo so, ma per me “a” è significativo. :-P È il nome che gli abbiamo dato a scuola.

  7. 7 ottobre 2007 8:53 pm

    Ciao Andrea,
    ho letto questo post con curiosità,non conosco bene php.
    Da come scrivi e da come spieghi,ti ho aggiunto tra i preferiti.
    E’ un piacere conoscerti,

    Ciao!

    Riccardo

  8. 7 ottobre 2007 10:46 pm

    è normale ke senza la ricorsione è + veloce. La ricorsione va bene per valori piccoli. Ci sarà un punto dove ricorsione ed iterazione avranno un break even point ( punto di pareggio ) dove la velocità sarà la stessa ma da quel punto in poi l’iterazione sarà più efficiente della ricorsione.

  9. 7 ottobre 2007 10:54 pm

    @Lazza: ok, capito. Quel che dice TheKaneB sul nome delle variabili è una sacrosanta verità! :)

  10. 8 ottobre 2007 8:14 am

    @rds4ever, grazie.
    @ T4n|n0 Ru|3z, sì ne avevo sentito parlare, ma una prova pratica è sempre la miglior cosa per convincersene, no? ;-)
    @ Paso, la seconda versione la capirebbe chiunque… :-P Leggila e vedi. :-)

  11. blood permalink
    8 ottobre 2007 6:13 pm

    che bello programmmare :D
    questo è stato uno dei miei primi scriptini in python:

    def sparta(x,y):
    print x,"? this is", y,"!!!"
    a = raw_input("what's the MADNESS?")
    v = raw_input("what's SPARTA?")
    sparta(a,v)

  12. 8 ottobre 2007 6:30 pm

    Non ci ho capito niente. :-D
    Sorry, ma non conosco il python. :-P

  13. allanon permalink
    15 ottobre 2007 3:18 pm

    python e’ grandioso, ma importantissima e’ la formattazione, infatti quello script funziona solo se le restanti ultime 3 righe sono indentate
    def blabla:
    blablabla

    Detto questo,
    la funzione, una volta richiamata con la seguente
    sparta(“madness”,”Sparta”)
    stampa:
    madness ? this is Sparta !!!
    dopo di che’, chiede di inserire altri due valori, i quali verranno passati a se stessa, e cosi’ via

  14. 15 ottobre 2007 3:32 pm

    Ah be’… se lo dici tu mi fido. :-)

  15. 4 novembre 2007 2:17 pm

    certo che è più veloce… la ricorsione è un modo elegante e veloce per risolvere problemi, ma a livello di calcolo richiede molte chiamate su se stesse e, conseguentemente, molto tempo di calcolo e memoria, per memorizzare lo stato delle chiamate… l’iterazione invece dovrebbe essere più performante perchè si riesegue lo stesso codice più volte, ma non si richiamano nuove funzioni. Figurati poi per la serie di Fibonacci ehehe… saluti e complimenti per il blog, un nuovo bookmark tra i miei ;)

  16. 4 novembre 2007 2:19 pm

    @ flux, grazie. :-D Ma più che i bookmark, non sarebbero meglio i feed? ;-)

  17. 4 novembre 2007 2:26 pm

    [OT]
    Lazza, ma sei fissato coi feed!

    P.S. Comunque non posso darti torto.
    [/OT]

  18. 4 novembre 2007 2:27 pm

    Ah ah ah! :lol:

  19. 4 novembre 2007 3:39 pm

    certo hihihih… ma su firefox i feed vengono gestiti come i bookmark… però hai ragine forse dovrei spostare i miei feed su un feedreader su web, sarebbe meglio :D

  20. 4 novembre 2007 4:44 pm

    Ah ah! Ok allora, segnalibri live. ;-)

Che cosa ne pensi?

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Iscriviti

Get every new post delivered to your Inbox.

Join 43 other followers