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

Do you need help?

Problema nella funzione ricorsiva

c
chiara (280 points)
2 2 3
in HW8 obbligatorio by (280 points)
closed by
Ho un problema nella funzione ricorsiva, quando lancio la funzione da dentro la funzione principale mi ritorna sempre solo None, mentre se faccio le prove 'a mano' il risultato esce corretto. La funzione dovrebbe tornare le coordinate 'D' e 'G'. Non riesco proprio a capire dove sbaglio.

Edit: sembra che la funzione ricorsiva non legga il return.

Praticamente ogni volta la funzione aggiunge 'G' e 'D' in modo corretto in una variabile x. Se faccio print(x) prima del return la variabile è giusta, subito dopo faccio return x e forse li la funzione non lo legge. Qualcuno può aiutarmi?
740 views
closed with the note: Risolto

6 Answers

Lorenzo Cristini (10830 points)
0 0 27
by (10.8k points)
Hai fatto il caso base? Devi fare in modo di ricoprire tutti i possibili casi e per ognuno di essi ritornare qualcosa, sennò ti esce None
c
chiara (280 points)
2 2 3
by (280 points)
Mi sembra di si, anche perché con gli stessi input inseriti a mano il risultato è corretto, quindi perché il risultato cambia quando lo chiamo dalla funzione?
E
Edward (25950 points)
3 4 172
by (26.0k points)
Senza vedere il codice è difficile sapere qual'è il problema. Dovresti usare il debugger e vedere cosa succede quando chiami la funzione e quando restituisce il valore.
c
chiarag (10160 points)
4 5 13
by (10.2k points)
Controlla se l'errore non sia magari nel codice, io avevo lo stesso tuo problema e poi mi sono accorta che sbagliavo a inserire i valori giusti (che utilizzavo nella ricorsione, e quindi se li provavo a mano questa veniva) in un dizionario. Dato che non mi inseriva quelli corretti mi ritornava None.
AlessandraIzzo (6010 points)
6 6 30
by (6.0k points)
forse è un problema delle Chiare
c
chiara (280 points)
2 2 3
by (280 points)
Chiamo le print ad ogni passo per capire come cambiano i valori e quali entrano nelle funzioni
AlessandraIzzo (6010 points)
6 6 30
by (6.0k points)
Cosa intendi con fare le prove "a mano"?
c
chiara (280 points)
2 2 3
by (280 points)
Chiamo la funzione e inserisco io gli input, e con il print prima del return mi esce il risultato giusto.
plm (18850 points)
13 15 118
by (18.9k points)
Il migliore amico del programmatore in crisi è il debugger :)

Aiuta tantissimo e tante volte sono veramente degli errori banali a non farti funzionare il codice
a
a.pietroluongo (11250 points)
20 39 131
by (11.3k points)

La funzione ricorsiva è dentro un if?  hai più condizioni se il valore  non è True?

c
chiara (280 points)
2 2 3
by (280 points)
Si, ho ricontrollato e mi sembra di aver analizzato tutti i casi, forse devo riscrivere tutto da capo perché non riesco proprio a capire cosa sbaglio
a
a.pietroluongo (11250 points)
20 39 131
by (11.3k points)
edited by
Salvi i risultati parziali?

---

Ok
c
chiara (280 points)
2 2 3
by (280 points)
Sisi, non è quello il problema.