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

Do you need help?

Exception: Recursion not present

L
LucaFumi (360 points)
0 7 9
in HW8 obbligatorio by (360 points)
closed by

Buongiorno,

non riesco a far funzionare la ricorsività. Ho impostato la ricorsione in una funzione esterna a ex1 ma i test danno errore Exception: Recursion not present.

ho visto che FanForFun ha avuto lo stesso problema ma è riuscito a risolverlo da solo inserendo come nota:
come non detto, è un problema di lettura iniziale del file con le istruzioni
quale potrebbe essere il problema?

 

459 views
closed with the note: non entrava in ricorsione perchè non era gestito bene l'input

3 Answers

AdSum (16290 points)
9 20 134
by (16.3k points)

Senza ulteriori informazioni si può fare poco. Controlla che effettivamente tu stai utilizzando il metodo ricorsivo. Non basta chiamarlo da ex1() ma bisogna anche che questo richiami se stesso almeno una volta.

NOTA: il sistema di test riconosce la presenza di ricorsione SOLO se
    la funzione/metodo ricorsivo è definita a livello esterno.
    NON definite la funzione ricorsiva all'interno di un'altra funzione/metodo
    altrimente fallirete tutti i test.

Stai rispettando questa condizione?

L
LucaFumi (360 points)
0 7 9
by (360 points)
sì, la funzione si richiama ricorsivamente più volte ed è definita esternamente da ex1().
AdSum (16290 points)
9 20 134
by (16.3k points)

quindi la struttura è qualcosa del tipo:
 

def ricorsione():
      testo vario

      ricorsione()

def ex1():

     ricorsione()

Ti risulta una struttura del genere?

L
LucaFumi (360 points)
0 7 9
by (360 points)
sì, ex1() elabora il file e dentro ad un for richiama ricorsione()

ricorsione() se arriva ad avere un segreto completo esce sennò continua a richiamarsi
AdSum (16290 points)
9 20 134
by (16.3k points)
Mi sembra strano, con il debugger puoi confermare che effettivamente il metodo sia scritto correttamente dal punto di vista logico e si richiama?
L
LucaFumi (360 points)
0 7 9
by (360 points)
ti confermo che si richiama anche perchè se metto in input il file esempio.txt e lo lancio manualmente mi ritorna le coppie segreti - città giuste.
AdSum (16290 points)
9 20 134
by (16.3k points)
Beh qui il mistero si infittisce. Hai provato a riscaricare lo zip? Magari per qualche strano motivo è fallato
L
LucaFumi (360 points)
0 7 9
by (360 points)
ho riprovato a scaricare lo zip e rifare i test ma stesso errore
L
LucaFumi (360 points)
0 7 9
by (360 points)
ora ho il dubbio su qualsiasi cosa,

posso inserire un for all'interno della funsione ricorsiva?

se c'è un if deve per forza avere un else?
AdSum (16290 points)
9 20 134
by (16.3k points)
Si e no.

Puoi inserire un for e non sei tenuto ad avere un else
L
LucaFumi (360 points)
0 7 9
by (360 points)
Grazie ho risolto, il problema era sull'indentazione del file iniziale,

processando un altro file per provare non entra in ricorsione.
F
FanForFun (1100 points)
4 8 17
by (1.1k points)
Ciao, il mio problema era sulla lettura del file. Sbagliavo a suddividere gli indizi, quindi il codice prendeva come elenco di indizi una lista vuota e di conseguenza non partiva nemmeno la funzione ricorsiva.

Prova a verificare col debugger se al momento del lancio della funzione ricorsiva ci sono elementi all'interno del parametro che gli mandi in input.
L
LucaFumi (360 points)
0 7 9
by (360 points)
ciao, i parametri ci sono tutti, anche perchè lanciando a mano uno degli esercizi mi ritorna il risultato desiderato.
F
FanForFun (1100 points)
4 8 17
by (1.1k points)
A me ne passava tre, ma in altri tre mi dava quell'errore. Il problema era dovuto al fatto che i tre che mi passava contenevano un indizio per ogni riga, mentre gli altri tre avevano più indizi sulla stessa riga, separati da tabulazione. Prova a vedere se è quello il problema.
L
LucaFumi (360 points)
0 7 9
by (360 points)
sì!! ho provato a processare un altro file ed effettivamente non entra in ricorsione perchè è sbagliato l'input!

grazie.
e
eduard_lisnic (870 points)
0 4 11
by (870 points)
Hai questo problema per tutti i test o solo per empty? Perché in quest'ultimo caso il professore ha detto che avrebbe dovuto aggiornare i test in quanto non necessario.
L
LucaFumi (360 points)
0 7 9
by (360 points)
per tutti i test