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

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Ricorsione non riconosciuta

B
Benigno (1020 points)
9 17 28
in HW8 obbligatorio by (1.0k points)
reshown by
Eseguendo i test sul mio programma mi viene notificato che non è presente la ricorsione.

Devo impostare il codice in un modo particolare per fargliela riconoscere? (ho già inserito la funzione ricorsiva nella parte più esterna del codice)

Ho provato anche a creare una funzione ricorsiva fasulla ma non riconosce neanche quella.

Esempio di come imposto la ricorsione:

ricorsione(a):

if a == 0:

    return

else: ricorsione (a-1)
664 views
closed

2 Answers

Best answer
E
Edward (25950 points)
4 4 172
by (26.0k points)
selected by

Come ti ha detto @CirilloA la funzione ricorsiva deve essere definita al livello più esterno per essere riconosciuta.

Inoltre, se usi try, except potrebbe non rilevartela nel caso in cui non hai specificato l'eccezione da gestire.
Per ulteriori informazioni ti consiglio di dare un'occhiata a questa risposta.

B
Benigno (1020 points)
9 17 28
by (1.0k points)
Non uso try except ed è definita esternamente in questo modo

es1():

    Funzionericorsiva()
E
Edward (25950 points)
4 4 172
by (26.0k points)
Tu adesso hai descritto la chiamata alla funzione, io ti sto parlando di definizione della funzione.
Per essere chiari è importante che tu abbia qualcosa del genere:

def es1():
    qualcosa
    funzioneRicorsiva()

def funzioneRicorsiva():
    qualcosa
    funzioneRicorsiva()
B
Benigno (1020 points)
9 17 28
by (1.0k points)
Grazie mille, ora ho capito!
L
Lolloxox31 (1610 points)
14 16 26
by (1.6k points)
Si possono dichiarare a livello piu esterno (fuori da es1) altre funzioni oltre a quella ricorsiva?
E
Edward (25950 points)
4 4 172
by (26.0k points)
Certo, quante vuoi.
L
Lolloxox31 (1610 points)
14 16 26
by (1.6k points)
Grazie Edward!!!
C
CirilloA (640 points)
6 8 14
by (640 points)
la funzione ricorsiva devi metterla fuori dalla funzione principale
andrea.sterbini (207940 points)
756 1270 2377
by (208k points)

Come indicato sopra, se chiudete la chiamata ricorsiva dentro un blocco try/except bloccate il meccanismo che scopre la ricorsione. Quindi:

  • la funzione ricorsiva deve essere a livello più esterno
  • oppure un metodo di una classe
  • non deve essere racchiusa in un blocco try/except