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: 2208 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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
# 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]
# vamos checar se o vetor está ordenado em ordem
# crescente
if(vetorOrdenadoCrescente(vetor)):
print("O vetor está ordenado em ordem crescente.")
else:
print("O vetor Não está ordenado em ordem crescente.")
if __name__== "__main__":
main()
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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
# 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
def main():
# vamos declarar um vetor de 5 elementos
vetor = [4, 12, 20, 42, 87]
# vamos checar se o vetor está ordenado em ordem
# crescente
if(vetorOrdenadoCrescente(vetor)):
print("O vetor está ordenado em ordem crescente.")
else:
print("O vetor Não está ordenado em ordem crescente.")
if __name__== "__main__":
main()
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 |
|
C++ - Programação Orientada a Objetos em C++ - Como criar e usar métodos estáticos em suas classes C++ Fórmulas da Física - Fórmula da Velocidade - Como calcular a velocidade quando temos a distância percorrida e o tempo gasto |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |







