Problema nella funzione ricorsiva

c
chiara (280 points)
2 2 3
asked Dec 18, 2019 in HW8 obbligatorio by chiara (280 points)
closed Dec 19, 2019 by chiara
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?
534 views
closed with note: Risolto

6 Answers

Lorenzo Cristini (10830 points)
0 0 27
answered Dec 18, 2019 by Lorenzo Cristini (10,830 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
commented Dec 18, 2019 by chiara (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)
2 4 172
answered Dec 18, 2019 by Edward (25,950 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)
3 5 13
answered Dec 18, 2019 by chiarag (10,160 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
commented Dec 18, 2019 by AlessandraIzzo (6,010 points)
forse è un problema delle Chiare
c
chiara (280 points)
2 2 3
commented Dec 19, 2019 by chiara (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
answered Dec 18, 2019 by AlessandraIzzo (6,010 points)
Cosa intendi con fare le prove "a mano"?
c
chiara (280 points)
2 2 3
commented Dec 19, 2019 by chiara (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)
7 15 118
answered Dec 18, 2019 by plm (18,850 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)
15 38 131
answered Dec 19, 2019 by a.pietroluongo (11,250 points)

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

c
chiara (280 points)
2 2 3
commented Dec 19, 2019 by chiara (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)
15 38 131
commented Dec 19, 2019 by a.pietroluongo (11,250 points)
edited Dec 19, 2019 by a.pietroluongo
Salvi i risultati parziali?

---

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