Você está aqui: Python ::: Dicas & Truques ::: Recursão (Recursividade) |
Como testar se um vetor está ordenado de forma crescente usando recursividade em PythonQuantidade de visualizações: 2062 vezes |
Nesta dica mostrarei um código bem interessante envolvendo recursão em Python. Trata-se de uma função recursiva que verifica se os elementos de um vetor estão ordenados de forma crescente (ou decrescente, se você trocar o operador relacional). A função recebe um vetor e testa o caso base. Se ainda não for o momento da parada, ela faz uma comparação e dispara uma nova chamada recursiva, dessa vez passando os elementos do vetor a partir do segundo elemento. Note o fatiamento do vetor usando o símbolo v[1:]. Eis o código completo para o exemplo: # função recursiva que testa se os elementos de um vetor # estão ordenados de forma crescente def vetorOrdenadoCrescente(v): # caso base - interrompe a recursividade if len(v) == 1: return True else: # efetua mais uma chamada recursiva return v[0] <= v[1] and vetorOrdenadoCrescente(v[1:]) # método principal def main(): # vamos declarar um vetor de 5 elementos vetor = [4, 12, 20, 42, 87] Ao executar este código Python nós teremos o seguinte resultado: c:\estudos_python>python estudos.py O vetor está ordenado em ordem crescente. Caso você queira ver o resultado das chamadas recursivas, podemos alterar o código para a seguinte versão: # contador das chamadas recursivas contador = 0 # função recursiva que testa se os elementos de um vetor # estão ordenados de forma crescente def vetorOrdenadoCrescente(v): # permite acesso à variável global global contador # efetua mais uma chamada recursiva contador = contador + 1 print(str(contador) + "ª chamada; Vetor = " + str(v)) # caso base - interrompe a recursividade if len(v) == 1: return True else: return v[0] <= v[1] and vetorOrdenadoCrescente(v[1:]) # método principal Ao executar o código novamente nós teremos o seguinte resultado: c:\estudos_python>python estudos.py 1ª chamada; Vetor = [4, 12, 20, 42, 87] 2ª chamada; Vetor = [12, 20, 42, 87] 3ª chamada; Vetor = [20, 42, 87] 4ª chamada; Vetor = [42, 87] 5ª chamada; Vetor = [87] O vetor está ordenado em ordem crescente. |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Python |
Veja mais Dicas e truques de Python |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |