PDA

Visualizza la versione completa : [SCHEME] Ricorsione e parole chiave


Taz3
28-10-2005, 12:22
Ragazzi chi sarebbe cosi genereso da spiegarmi come funzione la ricorsione e dove vado a vedere le parole-chiave del linguaggio?
:confused:

LeleFT
28-10-2005, 12:50
Per spiegare come funziona la ricorsione non credo che sia sufficiente partire dal forum: bisogna avere la teoria, magari su di un manuale.

Per le "parole chiave" del linguaggio Scheme (leggasi, funzioni) se usi Dr Scheme hai a disposizione una guida abbastanza completa.


Ciao. :ciauz:

Taz3
30-10-2005, 19:36
Ho dato un'occhiata ma penso di non aver trovato quello che mi interessa, potresti darmi un'indirizzo preciso? (SarÓ che non fa per me... :cry: ).
Grazie in anticipo...

LeleFT
31-10-2005, 14:25
Se tu usi Dr. Scheme (che Ŕ un'ambiente gratuito per programmare in Scheme... se frequenti l'universitÓ di Udine usi proprio Dr. Scheme) nell'ambiente hai un men¨ Guida (o ? non mi ricordo), il quale ti fornisce tutta la guida del linguaggio, comprese le funzioni nativamente supportate.

Altrimenti non ho capito cosa ti interessa... :)


Ciao. :ciauz:

Taz3
04-11-2005, 14:09
Leggo solo ora la tua risposta, sono ancora allo sbaraglio ma penso di avere materiale sufficiente. Ora mi tocca tradurre e provare...speriamo di capire :confused: :confused:

Intanto grazie mille.

Taz3
06-11-2005, 11:01
Ciao a tutti,
ho provato un paio di ricorsioni e tutto va bene...

(define prova
(lambda (n)
(if (= n 1)
1
(* n (prova (- n 1)))
)
))

...esempio (prova 10) = 10*9*8*7*6*5*4*3*2 = 3628800.
PerchŔ se al posto di ...(- n 1) ci metto (- n 2) e chiedo per un numero pari va in loop?

(define prova2
(lambda (n)
(if (= n 1)
1
(* n (prova2(- n 2)))
)
))

Se provo con un numero dispari funziona: (prova2 7) = 7*5*3 = 105.
Se provo con un numero pari va in loop...perchŔ?
Non dovrebbe essere per esempio: (prova2 6) = 6*4*2 = 48???

alka
06-11-2005, 13:06
Visto che si parla/continua lo stesso argomento, ho unito la tua nuova discussione con quella precedente.

Ciao! :ciauz:

LeleFT
07-11-2005, 14:14
PerchŔ se la fai sui numeri pari devi provvedere a 2 casi base e non uno solo: se provi a farlo andare con un numero pari, sottraendo sempre 2 non arriverai mai ad ottenere 1, ma 0


(define prova2
(lambda (n)
(if (= n 1)
1
(if (= n 0)
1
(* n (prova2(- n 2)))
)
)
)
)

Hai a disposizione anche la funzione cond che ti pu˛ essere utile se hai pi¨ di un caso da testare (Ŕ l'equivalente dello switch() di C e Java).


Ciao. :ciauz:

Taz3
07-11-2005, 20:15
Ottima spiegazione, ho capito, grazie mille.
Provo ad andare avanti da solo... :dh˛:

Loading