funções recursivas são funções que se chamam em sua definição . Porque uma função recursiva chama sobre si mesmo para realizar a sua tarefa, ele pode fazer os trabalhos que contêm trabalho idêntico em vários objetos de dados mais fácil de conceituar , planejar e escrever . No entanto , a recursão pode ser intensivo de sistema ou acabam sobrecarregando o sistema se a recursão não pára. Escrevendo funções recursivas em Python é semelhante ao uso de funções recursivas em outras linguagens de programação , com os mesmos benefícios e armadilhas. Amostra Recursão
funções recursivas se intitulam como parte de sua definição. Por exemplo :
>>> def factor (x) :
. . . factor (x)
Esta função vai continuar a chamar-se até que o sistema não consegue mais segurar a quantidade de chamadas de função feitas ( chamadas de função residem na memória como quaisquer outros dados ) . No entanto, isso simplifica como funciona um recursivas trabalha conceitualmente : A função ( fator ) chama a si mesmo ( factor (x) ), como parte de sua definição
casos base
. Uma função recursiva deve ter o que poderia ser chamado de "casos -base ", ou condições que indicam a função para impedir a sua recorrência . Este poderia ser qualquer condição que a função poderia ter satisfeito , como parte de sua operação. Como exemplo clássico , a função fatorial encontra o fatorial de um número n ( n! , ou n * n-1 * n- 2 ... 0). Então, o fatorial de 3 calcularia a 3 * 2 * 1 = 6. Um programador pode usar o número 0 como o caso base dessa função :
>>> if x == 0 :
. . . retornar 1
recursão
Se a função fatorial tem agora um caso base ( x == 0), então a recursão vai parar neste estado. Assim , seria apenas uma questão de usar recursão para executar a operação fatorial :
>>> mais:
. . . voltar x fator * ( x -1)
Se x não é igual a 0, então a recursão vai começar /continuar. A instrução return chamará " fator " e aguarde . Cada nova chamada função irá fazer o mesmo , pedindo e esperando até a última chamada de função ( quando x == 0) retorna 1 . Em seguida, cada chamada anterior vai terminar a instrução de retorno ( multiplicar o valor retornado do " fator " de x ) até que o fatorial é retornado.
Python recursão
recursão em qualquer língua pode acabar em um loop infinito , ou seja, uma estrutura recursiva que nunca termina até que o sistema pára -lo devido à falta de recursos . Python pára esta recursão " infinito " em 1.000 chamadas (para uma função pode chamar a si mesma em uma cadeia recursiva 1.000 exemplo , muito antes Python interrompe o processo ) . O programador pode alterar esse valor através das bibliotecas do sistema, como neste exemplo:
>>> import sys
>>> sys.setrecursionlimit (2000)
No entanto , nesse ponto os programadores podem se perguntar se a recursividade é a melhor solução para o problema.