GithubHelp home page GithubHelp logo

pdr-tuche / recursividade Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 114 KB

📚 Minha visão sobre a técnica de recursividade na progamação

License: GNU General Public License v3.0

Python 64.43% C++ 35.57%
python recursividade portugues recursao cpp

recursividade's Introduction

Recursividade (em desenvolvimento)

📚 Minha visão sobre a técnica de recursividade na progamação

Minha Definição:

Uma função recursiva é uma função que chama a si própia 🤝

tipos de recursividade:

A função recursiva pode se auto chamar dentro do própio escopo. Esse tipo de método é chamado de Recursividade direta. utilizando o exemplo de cálculo de fatorial, é possivel ver a recursividade direta na seguinte função:

  def fatorial(n):
    if n <= 1:
      return 1
    else:
      return n * fatorial(n-1)
codigo 1

Note que na estrutura de condição else da função fatorial é passada a própia função.

O outro tipo de função recursiva é a recursividade indireta, onde, a função recursiva é chamada a partir de outra função. Exemplo:

def exibir_fatorial(num):
  print(fatorial(num))
codigo 2

A função exibir_fatorial exibe na tela o resultado da função recursiva fatorial.

Como a recursividade funciona?

Primeiro é necessario saber que a recursividade faz a divisão do problema em duas partes:

O caso base que é uma forma do problema que se da uma resposta direta.

def fatorial(n):
  #caso base
  if n<= 1:
    return 1

O caso geral que seria um caso mais completo, no entanto, não é a solução final.

#caso base
if n<= 1:
  return 1
#recursao esta aqui:
else:
  return n * fatorial(n-1)

Considerando a lógica da definição do cálculo de fatórial, é possivel encontrar o caso base, os resultados de 1! e 0! que são iguais a 1. Sabendo disso, a função recursiva irá simplificar o cálculo do fatorial como se fosse uma estrutura de repetição. Irá chamar a si própia até simplificar o suficiente para chegar ao caso base. Observe a imagem:

Recursividade

Após chegar ao caso base, a função recursiva irá resolver os casos intermediários ate obter o resultado completo. Confira a imagem:

Recursividade

Porque usar a recursividade ?

Como dito anteriormente, a recursividade funciona como se fosse uma estrutura de repetição. Há casos onde a solução iterativa é difícil de se obter ou tem desempenho inferior à recursiva, nestes casos utiliza-se a recursividade. No entanto, sempre que possível deve-se optar por uma solução não recursiva, visto que, a recursividade abre mão do desempenho devido as 'N' chamadas de si própia, assim, gastando mais processamento e quantidade de memória principal.

Algumas vezes a implementação recursiva pode ser "convertida" em iterativa. Veja esse exemplo da utilização da estrutura de repetição while na resolução do mesmo problema:

def fatorial(n):
    fatorial = 1
    i=n
    while(i>0):
        fatorial*=i
        i=i-1
    return fatorial


numero = int(input("digite um numero para saber seu fatorial: "))
print(fatorial(numero))

Muita das vezes a otimização de códigos é feita diminuindo a complexidade de seus algoritimos, neste caso, a estrutura de repetição substitui a recursão para que haja mais perfomance de processamento e memória.

Testes de performance:

É possivel verificar o script de teste clicando aqui.

nos testes foi utilizado o tempo de execução de cada

recursividade's People

Contributors

pdr-tuche avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.