Estudando recursividade direta e indireta

Uma rápida explicação e demonstração de como funciona a recursividade para programas em C especialmente, usando como exemplo o algoritmo de Euclides para o cálculo do MDC.

[ Hits: 37.716 ]

Por: Carlos Roberto S. Junior em 29/02/2008


Recursividade indireta ou composta



A recursividade indireta é quando uma função faz a chamada a outra função e esta por sua vez faz uma chamada a primeira. Isso pode ocorrer em vários níveis de complexidade, ou seja, com um número variável de funções.

Um exemplo bem simples pode ser obtido à partir da função de cálculo do mdc, porém este exemplo é apenas um exemplo didático:

/*Algoritmo de Euclides para cálculo do MDC*/
#include <stdio.h>
/*include*/

int mdc1(int,int);
int mdc2(int,int);
/*protótipo de função*/

int main(void)
{
       int valorA, valorB;
      
       printf("\n\nDigite os valores (valor,valor): ");
       scanf("%d,%d",&valorA,&valorB);
      
       printf("\nO valor do MDC é %d. \n",mdc1(valorA,valorB));

       return 0;
}
/*fim de main*/

int mdc1(int valorA, int valorB)
{
      printf("\nInicio de 1\n");

       if(!valorB)
              return valorA;
       else
              return mdc2(valorB, valorA%valorB);
}
/*função de cálculo do mdc - primeira*/

int mdc2(int valorA, int valorB)
{
      printf("\nInicio de 2\n");

       if(!valorB)
              return valorA;
       else
              return mdc1(valorB, valorA%valorB);
}
/*função de cálculo do mdc - segunda*/

Os "printf" nas funções são simplesmente para demonstrar quando é feita a chamada a cada função para os que forem testar o exemplo. Há diversos exemplos e utilizações para a utilização de recursividade indireta (ou composto), principalmente para grandes sistemas.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Recursividade direta ou simples
   3. Recursividade indireta ou composta
Outros artigos deste autor

Alocação dinâmica de memória em C

Leitura recomendada

lib cURL - Trabalhe com URLs em C

Criando aplicativos para o iPhone no Linux (sem Xcode e MacOS X)

SDL e C - Uma dupla sensacional

Desenvolvendo um plugin de visualização para o XMMS (Parte 1)

Android NDK: Desmistificando o acesso a códigos nativos em C

  
Comentários
[1] Comentário enviado por f_Candido em 29/02/2008 - 18:25h

Legal.... Parabéns... Objetivo e eficiente.

Abraços


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts