Gente alguem me explica por favor o que e Recursividade direta e indireta em c ?Com exemplos por favor( pesquisei no google mas não achei explicando direta e indireta.)
Respostas
respondido por:
1
A Recursividade DIRETA é quando uma sub-rotina chama ela mesma diretamente.
Exemplo:
A Série de Fibonacci é dada por: 1, 1, 2, 3, 5, 8, 13, 21...
Repare que cada termo é a soma dos dois anteriores...
Então podemos dizer que Fibonacci(n) = Fibonacci (n - 1) + Fibonacci (n-2)
Em C, teríamos:
int fibonacci(int n)
{
if(n <= 2)
return 1;
else
return fibonacci(n-1) + fibonacci(n-2);
}
EXEMPLO DE USO NA 1ª IMAGEM.
Repare que na linha 6 a função chama ela mesma de forma direta.
__________________________________________________________
A Recursividade INDIRETA é quando uma sub-rotina chama uma outra sub-rotina (ou 'n' outras) que acabam chamando a sub-rotina "original" novamente.
Por exemplo, a sub-rotina A chama a B, porém a B faz uso da A. Portanto, indiretamente A chamou A, no caso, através de B.
Exemplo:
Um exemplo super simples seria fazer a soma de um valor com um produto...
Imagine que você deseja realizar a expressão: 5 + (2*3).
Um produto nada mais é do que uma série de somas. 2*3 = 2 + 2 + 2 = 6.
Para realizar essa operação a função "soma" usaria a função "produto" que por sua vez usará a função "soma" para fazer o produto de 2 por 3.
Em C então teríamos:
int soma(int a, int b)
{
return (a + b);
}
int produto(int a, int b)
{
int r = 0;
for(int i=0; i<b; i++)
r = soma(r,a);
return r;
}
EXEMPLO DE USO NA 2ª IMAGEM.
Repare que na linha 18 a função "soma" chama a "produto" e dentro da produto temos a chama de "soma".
Anexos:
GunsNRose:
Muito obrigada! Me ajudou muito!
Perguntas similares
6 anos atrás
8 anos atrás
8 anos atrás
8 anos atrás
9 anos atrás