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

Do you need help?

Notice Board

Test sulla ricorsione che fallisce su funzione ricorsiva

j
jacopoRufini (440 points)
8 12 17
in Es2 by (440 points)
closed by
Ciao ragazzi, ho gen_tree che ovviamente si genera ricorsivamente o l'intero program non mi funzionerebbe, eppure non passa il test sulla ricorsività. Il mio gen_tree richiama addirittura 2 funzioni ricorsive di utilità che sono poste a livello globale come la funzione di partenza. Per quanto riguarda funzioni annidate, non ne ho mai usate. Qualcuno ha avuto lo stesso problema?
985 views
closed with the note: answered

2 Answers

P
Powner (5600 points)
36 68 85
by (5.6k points)
Scusa se rispondo ad una domanda con un'altra domanda, ma tutti ne parlano e io non capisco: come si fanno ad effettuare i test sulla ricorsività?
j
jacopoRufini (440 points)
8 12 17
by (440 points)
A quanto pare i test sulla ricorsione non ci vengono forniti, perciò fai l'upload del program e lo vedi dal sito se ti passa i test. Per vederlo però non devi andare in timeout con i metodi precedenti, perchè i test sulla ricorsione sono gli ultimi ad essere runnati, e se superi i 20 secondi(nel caso dell'es2), il grade si ferma lì.
P
Powner (5600 points)
36 68 85
by (5.6k points)
Avevo capito anche io che fossero solo qui sul forum, ma mi sembrava strano visto che non mi segnava test diversi da quelli del grader. Quindi saranno "nascosti". A te esce un avviso specifico che ti fa capire che non hanno superato il test sulla ricorsione?
Luca T. (5410 points)
3 20 38
by (5.4k points)
Devi andare su risultati > tests e alla fine ci sono i test sulla ricorsione. Grazie a questa domanda ho risolto anche il dubbio che avevo io, pensavo che sul nostro grader già ci fosse il test
P
Powner (5600 points)
36 68 85
by (5.6k points)
I miei risultati sono questi https://prnt.sc/hi4xwy , avevo capito che i timeout impedivano i test sulla ricorsione solo alle funzioni in cui c'era almeno un timeout, in realtà a quanto pare basta un test in timeout per annullare qualunque test sulla ricorsione.
Io avevo postato il programma incompleto proprio per capire se passava i test della ricorsione, altrimenti era inutile che lo ottimizzavo per migliorare i tempi.
Invece, a quanto pare, questo non si può capire se non riescono tutti i test, giusto?

Spero che i voti non saranno dati così, visto che già i test sulla ricorsione valgono 3, poi se vengono calcolati soltanto se uno ha passato tutti i test di ogni programma significa che basta un minimo errore per perdere decine di punti.
Luca T. (5410 points)
3 20 38
by (5.4k points)
Non credo sia così, sarebbe quasi una "punizione" per chi non è riuscito a passare tutti i test il non controllare se ha usato funzioni ricorsive o meno. Probabilmente è una svista del professore, comunque aspettiamo una sua risposta per sapere di più o magari viene calcolato ma non viene riportato alla fine, non saprei.
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
Come? Ho decorato le funzioni in modo da lanciare una eccezione se fanno chiamate ricorsive.
P
Powner (5600 points)
36 68 85
by (5.6k points)
Adesso che ha modificato i test le prime tre funzioni mi passano il test sulla ricorsione. Per la quarta mi dà il test fallito, ma è solo per il timeout giusto?
https://prnt.sc/hi7wgm
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
No, leggi il messaggio di errore
P
Powner (5600 points)
36 68 85
by (5.6k points)
edited by
Non capisco l'errore perché ho fatto la stessa cosa che ho fatto per le altre tre funzioni. Tutte e quattro contengono una chiamata ad una funzione ricorsiva diversa, ma solo la quarta mi dà quel problema.
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
edited by
Sposto i test sulla ricorsione al primo posto.

PS: la tua gen_tree non passa i test perchè quando viene testata non fa nessuna chiamata ricorsiva .... guarda bene il tuo codice e lo capirai.
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
Controllerò a mano i casi segnalati come non-ricorsivi.
M
Matt_Ruggiero (2380 points)
16 39 45
by (2.4k points)
quindi controllerà  tutti quelli che risultano non ricorsivi? perchè anche la mia gen_tree è ricorsiva ma non passa il test
L
LucaStravato (1360 points)
10 31 38
by (1.4k points)
Prof. mi accodo anche io  comunicandole che da quando sta usando la nuova versione per calcolare la presenza di ricorsione, nel mio secondo programma - HW4 - quando va a controllare la presenza di ricorsione in strategia_vincente() non la trova(la ricorsione), perchè da l avviso ' No recursion detected in 'strategia_vincente'  ', ma la ricorsione nel codice è presente.( è una chiamata, in strategia_vincente, di una funzione ricorsiva, ma comunque in strategia_vincente  viene chiamata sempre)