Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Problema con l'output della ricorsione

alessio. (2780 points)
2 6 14
in HW8 obbligatorio by (2.8k 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è?

 

448 views
closed

1 Answer

Best answer
f
fabio.chiarini (2280 points)
0 0 7
by (2.3k points)
selected by
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
by (2.3k points)
Per come l'ho impostato io, li concateno direttamente nell'argomento quando li passo alla funzione
CiZ (3810 points)
5 13 21
by (3.8k 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
by (2.3k points)
Togli l'uguale
CiZ (3810 points)
5 13 21
by (3.8k points)
Grazie mille, in questo hw mi sono perso sempre in sciocchezze, grazie tante
f
fabio.chiarini (2280 points)
0 0 7
by (2.3k points)
Figurati, di nulla