Dubbio sulla ricorsione

M
Maryam1372 (1270 points)
10 32 38
asked Nov 27, 2017 in Es1 by Maryam1372 (1,270 points)
recategorized Nov 29, 2017 by andrea.sterbini
Salve a tutti
Solo ora ho capito che le soluzioni devono essere per forza ricorsive. Ho appena finito il primo esercizio ,però l'ho fatto con iterazione anziche con la ricorsione. A causa di miei impegni lavorativi riesco a riprendere solo dopo il sabato e quindi avrò poco tempo. Vorrei sapere in questo caso il punteggio del mio esercizio sarà uguale a 0?
243 views
closed with note: answered

2 Answers

Best answer
andrea.sterbini (172780 points)
513 935 1789
answered Nov 27, 2017 by andrea.sterbini (172,780 points)
selected Nov 27, 2017 by Maryam1372
No, i test complessivi saranno di due tipi: 1) che controllano le funzionalità ma non la ricorsione 2) che controllano che le funzioni siano ricorsive

Non passerai i secondi ma passerai i primi
M
Maryam1372 (1270 points)
10 32 38
commented Nov 27, 2017 by Maryam1372 (1,270 points)
Benissimo. Cmq cerco di conventirli
La ringrazio per la risposta
LeonardoEmili (35740 points)
11 65 155
answered Nov 27, 2017 by LeonardoEmili (35,740 points)

Ciao Maryam buona serata,

guarda sinceramente per il punteggio non so darti un valore esatto però devo dirti che purtroppo questo HW si basa sulla ricorsione pertanto sarà fortemente penalizzato chi non la userà, forse al pari di chi non svolgerà per niente l'esercizio. E' davvero un peccato che tu abbia risolto il primo problema ma non senza usare la ricorsiva. Voglio darti qualche suggerimento, poichè immagino che sarai arrivata alla soluzione con qualche metodo alternativo, e che non conoscendo il numero di iterazioni avrai basato il tuo programma su un grande while. Se sei arrivata a questo punto in realtà la soluzione del problema per passare una funzione a ricorsiva è piuttosto semplice, te la schematizzo:

  1. Scomponi il tuo problema in problema/dichiarazione e inizializzazione di variabili. Questa parte solitamente è la chiamata alla funzione del grade. Qui implementerai poi una funzione che una volta eseguita eseguirà la stesssa operazione ricorsivamente.
  2. Crea una seconda funzione che chiamerai dalla funzione principale suddetta, tale funzione avrà come argomento un argomento mutevole. Ti faccio un esempio. Se vuoi aver la moltiplicazione di n numeri parti con un caso noto. Ad esempio 5. Vuoi allora moltiplicare tutti i numeri secondo lo schema del fattoriale. Alla prima chiamata della tua funzione in x ci sarà 5, poi invece di ritornare il valore di totale * numero, ritornerai il totale_parziale (chiamiamolo così perché sarà richiamato) e poi al posto di x avrai x-1. E così via fino al caso 1, caso in cui uscirai dalla funzione ricorsiva con un return x.

Tutti questi consigli non vogliono essere inutili o perditempo, solo mi scoccerebbe che una soluzione non fosse accetta per un problema di ""forma"" . Tra mille virgolette ovviamente in quanto cambiando il programma secondo il modo che ti ho descritto sebbene potrebbe sembrarne banale la descrizione verbale, cambierebbe l'intero funzionamento del tuo programma, raggiungendo però lo stesso risultato, stavolta però secondo "le vie consentite".

Di nuovo,

buona serata

.

Leonardo Emili