Ragazzi chi sarebbe cosi genereso da spiegarmi come funzione la ricorsione e dove vado a vedere le parole-chiave del linguaggio?
![]()
Ragazzi chi sarebbe cosi genereso da spiegarmi come funzione la ricorsione e dove vado a vedere le parole-chiave del linguaggio?
![]()
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.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
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...).
Grazie in anticipo...
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.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
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![]()
![]()
Intanto grazie mille.
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???
Visto che si parla/continua lo stesso argomento, ho unito la tua nuova discussione con quella precedente.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
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
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).codice:(define prova2 (lambda (n) (if (= n 1) 1 (if (= n 0) 1 (* n (prova2(- n 2))) ) ) ) )
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Ottima spiegazione, ho capito, grazie mille.
Provo ad andare avanti da solo...![]()