Do you need any help?

Problema con l'output della ricorsione

alessio. (2780 points)
1 5 14
asked Dec 12, 2020 in HW8 obbligatorio by alessio. (2,780 points)

Salve a tutti,

Ho impostato il programma in modo molto standard,quindi uso il dizionario che molti stanno usando del tipo:

{ROMAla:[['PARIGI','vendita'],['CAIRO','furto]]...}

Applico anche la ricorsione nel modo più comune:

  • partendo da ROMAla,per ogni sottolista ,aggiorno alla stringa(vuota di default) il segreto del relativo alla sottolista in cui mi trovo;
  • assegno a una lista(anch'essa vuota di default) il valore della chiamata ricorsiva a cui passo la lista degli indizi ridotta e la stringa con il segreto parziale;
  • quando arrivo al caso base(la lista degli indizi ha un solo elemento) completo la stringa e la appendo a un lista,ritorno la lista.
Qunado esco dalla funzione l'output è questo:

[('vendita diamanti rubati stanotte ad  anversa', 'CANCUN'), ('vendita diamanti cannoni mercato nero del  cairo', 'CANCUN'), ('vendita furto di diamanti a buckingham  palace', 'MILANO'), ('vendita furto mata hari ha sedotto ambasciatore  zambia', 'MILANO')]

Qualcuno riesce a spiegarmi perchè?

 

234 views

1 Answer

Best answer
f
fabio.chiarini (2280 points)
0 0 7
answered Dec 12, 2020 by fabio.chiarini (2,280 points)
selected Dec 12, 2020 by alessio.
Prova a dare un'occhiata qui, un altro studente aveva il tuo stesso problema: https://q2a.di.uniroma1.it/20726/aiuto-sulla-ricorsione?course=hw8-required/homeworks/fondamenti-di-programmazione-20-21.

Come ho risposto lì, probabilmente stai aggiornando una variabile che poi passi come argomento nelle varie funzioni ricorsive. Invece di passare la variabile, prova a passare direttamente la stringa dei segreti "aggiornata" nella funzione ricorsiva, dovrebbe risolverti quel problema.
f
fabio.chiarini (2280 points)
0 0 7
commented Dec 16, 2020 by fabio.chiarini (2,280 points)
Per come l'ho impostato io, li concateno direttamente nell'argomento quando li passo alla funzione
CiZ (3810 points)
4 12 20
commented Dec 16, 2020 by CiZ (3,810 points)
Ho provato a fare così ma non si può fare funzione(paramentri, segreto + = nuovo_segreto)

Mi sto perdendo qualcosa
f
fabio.chiarini (2280 points)
0 0 7
commented Dec 16, 2020 by fabio.chiarini (2,280 points)
Togli l'uguale
CiZ (3810 points)
4 12 20
commented Dec 16, 2020 by CiZ (3,810 points)
Grazie mille, in questo hw mi sono perso sempre in sciocchezze, grazie tante
f
fabio.chiarini (2280 points)
0 0 7
commented Dec 16, 2020 by fabio.chiarini (2,280 points)
Figurati, di nulla