recursionerror profondità massima di ricorsione superata durante la chiamata di un oggetto Python

Funzioni ricorsive, senza limiti, potrebbero chiamarsi indefinitamente. Se scrivi una funzione ricorsiva che viene eseguita su un certo numero di iterazioni, incontrerai la "profondità di ricorsione massima superata nel confronto" errore Python.

Questa guida spiega cosa significa questo errore e perché è importante. Esamineremo un esempio di questo errore in modo che tu possa imparare come risolverlo nel tuo programma.

profondità di ricorsione massima superata in confronto

Le funzioni ricorsive sono funzioni che si richiamano a trovare una soluzione a un programma.

Le funzioni ricorsive ben scritte includono limiti per garantire che non vengano eseguite all’infinito. Ciò può significare che una funzione deve essere eseguita solo finché non viene soddisfatta una particolare condizione.

Se scrivi una funzione ricorsiva che esegue più di un determinato numero di iterazioni (di solito 997), vedrai un errore quando si arriva all’iterazione successiva.

Questo perché Python limita la profondità di un algoritmo di ricorsione. Questo si riferisce a quante volte la funzione può chiamare se stessa.

Puoi visualizzare il limite di ricorsione nella tua shell Python usando questo codice:

Uno scenario di esempio

Facciamo‚Äô s scrive una funzione ricorsiva che calcola un numero nella sequenza di Fibonacci. Nella sequenza di Fibonacci, il numero successivo nella sequenza è la somma degli ultimi due numeri. I primi due numeri della sequenza sono 0 e 1.

L’81% dei partecipanti ha dichiarato di sentirsi più sicuro delle proprie prospettive di lavoro nel settore tecnologico dopo aver frequentato un bootcamp. Fatti abbinare a un bootcamp oggi.

Il laureato medio di un bootcamp ha trascorso meno di sei mesi nella transizione di carriera, dall’avvio di un bootcamp alla ricerca del primo lavoro.

Ecco una funzione ricorsiva che calcola la Sequenza di Fibonacci:

Se il il numero che specifichiamo è minore o uguale a 1, quel numero viene restituito. Altrimenti, il nostro programma calcola il numero successivo nella sequenza.

Successivamente, chiameremo la nostra funzione:

print (fibonacci(5000))

Questo codice calcola il numero dopo il 5.000esimo numero nella sequenza di Fibonacci. Eseguiamo il nostro codice e vediamo cosa succede:

Il nostro codice restituisce un lungo messaggio di errore. Questo messaggio è stato abbreviato per brevità.

La soluzione

Python ha generato un errore di ricorsione per proteggerci da un overflow dello stack. questo è quando il puntatore in uno stack supera il limite dello stack. Senza questo errore, il nostro programma proverebbe a utilizzare più spazio di memoria di quello disponibile.

Possiamo correggere questo errore rendendo la nostra sequenza iterativa o aumentando il limite di ricorsione nel nostro programma.

Soluzione n. 1: utilizzare un algoritmo iterativo

Possiamo modificare il nostro programma per utilizzare invece un approccio iterativo di un approccio ricorsivo:

Questo codice calcola i primi cinque numeri della sequenza di Fibonacci. Potremmo aumentare il numero di valori che calcoliamo, ma ciò aumenterebbe anche il tempo necessario per l’esecuzione del nostro programma. Il nostro programma restituisce:

1

1

2

3

5

Questo approccio ignora l’errore di ricorsione perché non utilizziamo funzioni ricorsive. Invece, usiamo un ciclo while per calcolare il numero successivo nell’elenco.

Soluzione 2: aumentare il limite di ricorsione

Puoi sovrascrivere il limite di ricorsione predefinito impostato da Python usando il setrecursionlimit( ) metodo:

Questo codice imposta la profondità massima di ricorsione a 5.000. Dovresti stare attento quando usi questo metodo perché potrebbe causare un overflow dello stack a seconda delle risorse disponibili per l’interprete Python.

"Il Karma di carriera è entrato nella mia vita quando ne avevo più bisogno e mi ha aiutato rapidamente mi abbino a un bootcamp. Due mesi dopo la laurea, ho trovato il lavoro dei miei sogni in linea con i miei valori e i miei obiettivi nella vita!"

Venus, Software Engineer presso Rockbot

In generale, è meglio riscrivere una funzione per utilizzare un approccio iterativo invece di aumentare il limite di ricorsione.

Conclusione

La "massima ricorsione profondità superata in confronto" viene generato un errore quando si tenta di eseguire una funzione che supera il limite di ricorsione integrato di Python. Puoi correggere questo errore riscrivendo il tuo programma per utilizzare un approccio iterativo o aumentando il limite di ricorsione in Python.

Ora hai le conoscenze necessarie per correggere questo errore come un professionista!

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method