SlideShare uma empresa Scribd logo
Recursividade em Linguagem C:
A função recursiva é um método de determinadas linguagens de programação de
executa-las a si mesmas, ou seja, dentro de um código, tem a capacidade de chamar
um “subcódigo” para ser executado. Porem a função não é ilimitado, pelo contrario, o
numero de vezes que uma função pode ser chamada recursivamente é do mesmo
tamanho da pilha (stack - um tipo abstrato de dado e estrutura de dados baseado)
quando o valor deste limite é alcançado o programa se termina como o erro: “Stack
overflow” ou ainda “erro: Stack fault”.

As funções recursivas são em sua maioria soluções mais elegantes e simples, se
comparadas funções mais tradicionais, já que utilizam tarefas repetitivas sem executar
uma estrutura de repetição como o while ou for. Apesar da simplicidade é preciso
tomar cuidado com certos problemas como o de pilha, e ainda como é pesada para
uma CPU utilizar a recursividade.

Como funciona:

Como já explicado a função recursiva chama a si mesma de uma forma limitada, para
entender melhor é mostrado duas divisões fundamentais desta função.

    Ponto de paragem: O ponto de paragem da recursividade deve ser definido
     sem a utilização da mesma, sendo este ponto geralmente um limite inferior ou
     superior ao limite geral.
    Regra geral: O método geral da recursividade reduz a resolução do problema
     através da invocação recursiva de casos menores sendo resolvidos por casos
     ainda menores e assim sucessivamente, até atingir o ponto de paragem que
     finaliza o método.

   Exemplo:

   #include<stdio. h>
   Int factorial (int n){
   If (n == 0 ) < ponto de paragem >
       Return 1;
   Else if (n < 0){
       Printf (“Fatorial negativo não é permitido.n”);
       Exit (0); }
   Return n*fatorial (n-1);
   }
Cada vez que uma função é chamada e executada corretamente de forma
recursiva, seus parâmetros obtêm copias que são alojadas e armazenadas
temporariamente, assim não perdendo os valores de chamadas anteriores e ainda
só sendo acessível a instancia do parâmetro criado inicialmente e não de outras
instancias.

Exemplo:

Entra  fatorial (5):

   5!  5*4!  4*3!  3*2!  2*1!  1*0! (0 = ponto de paragem) .

Volta ao inicio realizando e armazenando o resultado dos cálculos:

   1*(1)  2*(1)  3*(2)  4*(6)  5*(24)  120

Sai  120.

Conclusão:

A recursividade é um bom método de programação para problemas simples que
geralmente acabam por exigir certas funções de repetição. Essa função de
recursividade trará resultados rápidos tornando o método principal do programa
mais simples, por isso deve ser implementada como uma solução para diversos
problemas.

Referencias:

PDF’s de Silvana Maria Affonso e “sssinformatica”:

http://wiki.icmc.usp.br/images/a/aa/Aula09-Recursao_2010.pdf

http://www.sssinformatica.com.br/prc/Recursividade2.pdf




Nome: Leonardo N. Lima ADS – 2ºsemestre

Mais conteúdo relacionado

PPT
Sistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
PPT
Sistemas operacionais sistemas-distribuidos
PPTX
Algoritmo recursivo
PPTX
Licenças de software
PPTX
Linguagem C - Vetores
PDF
Introdução à Programação Web com Angular
PDF
03 mer2
PDF
SO-04 Escalonamento de Processos
Sistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
Sistemas operacionais sistemas-distribuidos
Algoritmo recursivo
Licenças de software
Linguagem C - Vetores
Introdução à Programação Web com Angular
03 mer2
SO-04 Escalonamento de Processos

Mais procurados (20)

PPT
Análise Orientada a Objetos - Objetos E Classes
PDF
[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais)
PDF
Arquitectura e modelos de sistemas distribuidos
PDF
POO - Aula 09 - Herança
PDF
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
PDF
Python Módulo Básico - Introdução a linguagem Python
PDF
SI - Processos, Threads, Virtualização e Migração de Código
PDF
Aula 1 - Introdução a POO
PDF
Curso de Java: Introdução a lambda e Streams
PPT
Aula básica de internet
PPT
2009 1 - sistemas operacionais - aula 8 - memoria
PPTX
Introdução a Linguagem de Programação PHP
DOC
Programacao para Web I Plano de Ensinodoc
PPT
Prototipação de software
PDF
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
PDF
Logica programacao python-slides
PPSX
PPTX
Programação orientada a objetos
PPT
Modelagem de Dados - Introdução à UML
PPSX
Vetores e Matrizes em C.
Análise Orientada a Objetos - Objetos E Classes
[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais)
Arquitectura e modelos de sistemas distribuidos
POO - Aula 09 - Herança
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
Python Módulo Básico - Introdução a linguagem Python
SI - Processos, Threads, Virtualização e Migração de Código
Aula 1 - Introdução a POO
Curso de Java: Introdução a lambda e Streams
Aula básica de internet
2009 1 - sistemas operacionais - aula 8 - memoria
Introdução a Linguagem de Programação PHP
Programacao para Web I Plano de Ensinodoc
Prototipação de software
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Logica programacao python-slides
Programação orientada a objetos
Modelagem de Dados - Introdução à UML
Vetores e Matrizes em C.
Anúncio

Destaque (13)

PDF
Análise de Algoritmos - Recursividade
PPT
Recursividade em C
PPT
Logica Algoritmo 08 Recursividade
PDF
Conferencia consenso Bronquiolitis aguda_resumen recomendaciones
PDF
Programação Dinâmica - Segmento de Soma Máxima
PPTX
Aula 15 recursao-organizacao-arquivos - Programação 1
PPTX
Um estudo sobre recursividade e suas aplicações
DOCX
Aulas de estrutura de dados por Ayrton Yagami
PDF
Análise de Algoritmos - Programação Dinâmica
PDF
Análise de Algoritmos - Método Guloso
PPT
Recursividade
PDF
Apostila de algoritmos e lã³gica de programaã§ã£o
PDF
Recursividade
Análise de Algoritmos - Recursividade
Recursividade em C
Logica Algoritmo 08 Recursividade
Conferencia consenso Bronquiolitis aguda_resumen recomendaciones
Programação Dinâmica - Segmento de Soma Máxima
Aula 15 recursao-organizacao-arquivos - Programação 1
Um estudo sobre recursividade e suas aplicações
Aulas de estrutura de dados por Ayrton Yagami
Análise de Algoritmos - Programação Dinâmica
Análise de Algoritmos - Método Guloso
Recursividade
Apostila de algoritmos e lã³gica de programaã§ã£o
Recursividade
Anúncio

Semelhante a Recursividade em linguagem C (20)

PPTX
Recursividade
PPSX
Recursividade
PPTX
PDF
Pged 07
PDF
12 algoritmos e funcoes recursivas
PPT
Pesquisa e ordenação recursividade
PPTX
Apresentação recursividade rev2
PDF
aula de cálculo pdf atualizado 2023 funções
PPTX
Estrutura de dados em Java - Recursividade
PPTX
PPTX
AP5_2013_2.pptx
PPTX
Programação Estruturada 2 - Aula 06
DOCX
Programação Estruturada 2 - Aula 06 - Código Fonte
PPTX
Estrutura de Dados - Aula 04
PDF
Programando em python recursao
PPTX
Recursividade em java
PPTX
Algoritmos e Estrutura de Dados - Aula 04
PDF
Linguagem C - Recursão [exercícios]
PDF
Análise de Algoritmos - Solução de Recorrências
PPTX
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
Recursividade
Recursividade
Pged 07
12 algoritmos e funcoes recursivas
Pesquisa e ordenação recursividade
Apresentação recursividade rev2
aula de cálculo pdf atualizado 2023 funções
Estrutura de dados em Java - Recursividade
AP5_2013_2.pptx
Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06 - Código Fonte
Estrutura de Dados - Aula 04
Programando em python recursao
Recursividade em java
Algoritmos e Estrutura de Dados - Aula 04
Linguagem C - Recursão [exercícios]
Análise de Algoritmos - Solução de Recorrências
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...

Último (20)

PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
PPTX
Aula sobre desenvolvimento de aplicativos
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PPTX
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
COBITxITIL-Entenda as diferença em uso governança TI
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Aula 18 - Manipulacao De Arquivos python
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Curso de Java 9 - (Threads) Multitarefas.pptx
Aula sobre desenvolvimento de aplicativos
Custos e liquidação no SAP Transportation Management, TM130 Col18
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Apple Pippin Uma breve introdução. - David Glotz
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
COBITxITIL-Entenda as diferença em uso governança TI

Recursividade em linguagem C

  • 1. Recursividade em Linguagem C: A função recursiva é um método de determinadas linguagens de programação de executa-las a si mesmas, ou seja, dentro de um código, tem a capacidade de chamar um “subcódigo” para ser executado. Porem a função não é ilimitado, pelo contrario, o numero de vezes que uma função pode ser chamada recursivamente é do mesmo tamanho da pilha (stack - um tipo abstrato de dado e estrutura de dados baseado) quando o valor deste limite é alcançado o programa se termina como o erro: “Stack overflow” ou ainda “erro: Stack fault”. As funções recursivas são em sua maioria soluções mais elegantes e simples, se comparadas funções mais tradicionais, já que utilizam tarefas repetitivas sem executar uma estrutura de repetição como o while ou for. Apesar da simplicidade é preciso tomar cuidado com certos problemas como o de pilha, e ainda como é pesada para uma CPU utilizar a recursividade. Como funciona: Como já explicado a função recursiva chama a si mesma de uma forma limitada, para entender melhor é mostrado duas divisões fundamentais desta função.  Ponto de paragem: O ponto de paragem da recursividade deve ser definido sem a utilização da mesma, sendo este ponto geralmente um limite inferior ou superior ao limite geral.  Regra geral: O método geral da recursividade reduz a resolução do problema através da invocação recursiva de casos menores sendo resolvidos por casos ainda menores e assim sucessivamente, até atingir o ponto de paragem que finaliza o método. Exemplo: #include<stdio. h> Int factorial (int n){ If (n == 0 ) < ponto de paragem > Return 1; Else if (n < 0){ Printf (“Fatorial negativo não é permitido.n”); Exit (0); } Return n*fatorial (n-1); }
  • 2. Cada vez que uma função é chamada e executada corretamente de forma recursiva, seus parâmetros obtêm copias que são alojadas e armazenadas temporariamente, assim não perdendo os valores de chamadas anteriores e ainda só sendo acessível a instancia do parâmetro criado inicialmente e não de outras instancias. Exemplo: Entra  fatorial (5): 5!  5*4!  4*3!  3*2!  2*1!  1*0! (0 = ponto de paragem) . Volta ao inicio realizando e armazenando o resultado dos cálculos: 1*(1)  2*(1)  3*(2)  4*(6)  5*(24)  120 Sai  120. Conclusão: A recursividade é um bom método de programação para problemas simples que geralmente acabam por exigir certas funções de repetição. Essa função de recursividade trará resultados rápidos tornando o método principal do programa mais simples, por isso deve ser implementada como uma solução para diversos problemas. Referencias: PDF’s de Silvana Maria Affonso e “sssinformatica”: http://wiki.icmc.usp.br/images/a/aa/Aula09-Recursao_2010.pdf http://www.sssinformatica.com.br/prc/Recursividade2.pdf Nome: Leonardo N. Lima ADS – 2ºsemestre