Funzioni Python ricorsive

May 15

Funzioni Python ricorsive


funzioni ricorsive sono funzioni che si definiscono nella loro definizione. Perché una funzione ricorsiva richiama su se stessa per svolgere il suo compito, può fare i lavori che contengono il lavoro identico su oggetti di dati più facile di ideare, pianificare e scrivere. Tuttavia, la ricorsione può essere ad alta intensità di sistema o finiscono per sovraccaricare il sistema se la ricorsione non si ferma. Scrittura di funzioni ricorsive in Python è simile all'utilizzo di funzioni ricorsive in altri linguaggi di programmazione, con gli stessi vantaggi e le insidie.

ricorsione campione

funzioni ricorsive si definiscono come parte della loro definizione. Per esempio:

fattore def (x):

. . . fattore (x)

Questa funzione continuerà a chiamarsi fino a quando il sistema non può più contenere la quantità di chiamate di funzione effettuate (chiamate di funzione risiedono nella memoria come qualsiasi altro dato). Tuttavia, questo semplifica come funziona concettualmente a funzioni ricorsive: Una funzione (fattore) si chiama (fattore (x)) come parte della sua definizione.

Casi di base

Una funzione ricorsiva deve avere quello che potrebbe essere chiamato "casi di base", o condizioni che raccontano la funzione per fermare la sua ricorsione. Questo potrebbe essere qualsiasi condizione che la funzione potrebbe avere soddisfatto come parte del suo funzionamento. Come esempio classico, la funzione fattoriale trova il fattoriale di un numero n (n !, o n n-1 n-2... 0). Così il fattoriale di 3 sarebbe calcolare per 3 2 1 = 6. Un programmatore potrebbe utilizzare il numero 0 come il caso base di questa funzione:

se x == 0:

. . . ritornare 1

ricorsione

Se la funzione fattoriale ha ora un caso base (x == 0), quindi ricorsione si ferma a questa condizione. Quindi, sarebbe solo questione di usare ricorsione per eseguire l'operazione fattoriale:

altro:

. . . tornare x * fattore (x-1)

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 (se x == 0) restituisce 1. Poi, ogni chiamata precedente si concluderà l'istruzione return (moltiplicare il valore restituito dal "fattore" di x) fino 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 non è a causa della mancanza di risorse. Python arresta questo ricorsione "infinita" a 1.000 chiamate (quindi una funzione può dirsi in 1.000 un'istanza catena lunga ricorsiva prima Python interrompe il processo). Il programmatore può modificare questo valore attraverso le librerie di sistema, come in questo esempio:

import sys

sys.setrecursionlimit (2000)

Tuttavia, a quel punto di programmatori potrebbero chiedersi se la ricorsione è la migliore soluzione per il problema.