funzioni ricorsive sono funzioni che si definiscono nella loro definizione . Poiché una funzione ricorsiva chiama se stessa per svolgere il suo compito , può fare i lavori che contengono il lavoro identico su oggetti dati più facili da concettualizzare , progettare e scrivere . Tuttavia, la ricorsione può essere alta intensità di sistema o di finire di sovraccaricare il sistema se la ricorsione non si ferma . Scrittura di funzioni ricorsive in Python è simile ad usare le funzioni ricorsive in altri linguaggi di programmazione , con gli stessi vantaggi e le insidie . Esempio di ricorsione
funzioni ricorsive si definiscono come parte della loro definizione . Per esempio :
>>> def fattore ( x ) :
. . . fattore ( x ) per
Questa funzione continua a chiamare se stesso fino a quando il sistema non può più contenere la quantità di funzioni chiamate effettuate ( chiamate di funzione risiedono nella memoria come qualsiasi altro dato ) . Tuttavia, questo semplifica il modo a funzioni ricorsive opere concettualmente : Una funzione ( fattore ) chiama se stessa ( fattore ( x ) ), come parte della sua definizione
Casi Base
. Una funzione ricorsiva deve avere quello che si potrebbe definire "casi base", o condizioni che raccontano la funzione di fermare la sua ricorsione . Questo potrebbe essere qualsiasi condizione che la funzione potrebbe aver soddisfatto come parte del suo funzionamento . Come un esempio classico , la funzione fattoriale trova il fattoriale di un numero n ( n! , o n * n- 1 * n-2 ... 0 ) . Quindi il fattoriale di 3 potrebbe calcolare a 3 * 2 * 1 = 6 . Un programmatore può utilizzare il numero 0 come caso base di questa funzione :
>>> if x == 0 :
. . . ritorno 1
ricorsione
Se la funzione fattoriale ha ora un caso base ( x == 0 ) , allora ricorsione si ferma a questa condizione. Quindi , sarebbe solo una questione di usare la ricorsione per eseguire l'operazione fattoriale :
>>> altro :
. . . return x * fattore (x - 1 ) per
Se x non è uguale a 0 , allora la ricorsione avrà inizio /continuare. L'istruzione return chiamerà "fattore " e attendere . Ogni nuova chiamata di funzione farà lo stesso , chiamando e in attesa fino a quando l'ultima chiamata di funzione ( quando x == 0 ) restituisce 1 . Poi , ogni chiamata precedente si concluderà l'istruzione return ( moltiplicare il valore restituito da "fattore " di x ), fino a quando il fattoriale viene restituito .
Python ricorsione
ricorsione in qualsiasi lingua può finire in un ciclo infinito : Cioè , una struttura ricorsiva che non finisce mai fino a quando il sistema si blocca a causa di mancanza di risorse. Python ferma questa ricorsione "infinito" a 1.000 chiamate ( in modo che una funzione può richiamare se stesso in un caso - lunga catena ricorsiva 1.000 prima di Python si interrompe il processo ) . Il programmatore può modificare questo valore attraverso le librerie di sistema , come in questo esempio :
>>> import sys >>>
sys.setrecursionlimit (2000 ) per
Tuttavia, a quel punto i programmatori potrebbero chiedersi se la ricorsione è la migliore soluzione per il problema.