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.
















uhm, attento alla lunghezza, che se metto 9999999999999999999999999999999999999999
non so poi che succeda xD
(di default dopo 30 secondi lo script viene stoppato
Non succede niente… Si stoppa e basta.
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
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! ^_^
PS: quello che dice Paso è giusto… ma avrai tempo e modo per capire e padroneggiare concetti come “complessità computazionale” ed efficienza algoritmica.
@ 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.
È il nome che gli abbiamo dato a scuola.
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.
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
è 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.
@Lazza: ok, capito. Quel che dice TheKaneB sul nome delle variabili è una sacrosanta verità!
@rds4ever, grazie.
Leggila e vedi.
@ 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…
che bello programmmare
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)
Non ci ho capito niente.
Sorry, ma non conosco il python.
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
Ah be’… se lo dici tu mi fido.
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
@ flux, grazie.
Ma più che i bookmark, non sarebbero meglio i feed?
[OT]
Lazza, ma sei fissato coi feed!
P.S. Comunque non posso darti torto.
[/OT]
Ah ah ah!
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
Ah ah! Ok allora, segnalibri live.