Usuário com melhor resposta
duvida com recurssividade

Pergunta
-
ola pessoal, estou tentando executar essa rotina sobre recurssividade, quero localizar o numero 11 em um vetor com 10 elementos e mostrar a posição em que ele se encontra, não estou conseguindo compilar, nunca fiz recurssividade.
obrigado.
int BuscaLinearR(int x, int n, int v[], int e)
{
if(e == n)
{
return n;
}
if(v[e] == x)
return e;
else
{
int aux = BuscaLinearR();
}
}
int main(void)
{
int e, x, resultado, aux;
int v = {47,-33,24,2,-14,11,17,89,-20,0};
printf("Entre com um numero: ");
scanf("%d",&x);
resultado = BuscaLinearR(11,10,11,e+1);
printf("O resultado eh: %d",resultado);
getch();
return(0);
}
Respostas
-
Amigo as variaveis está meia confusa de entender, e pq precisa de 4 parametros?
segue um exemplo do metodo recursivo que criaria para localizar um valor.
o parametro cont seria o contador para fazer a chamada pode colocar como 0 ou a posição no qual quer iniciar a busca, o parametro list sera a lista no qual deseja procurar no seu caso seria sua variavel "v", e o parametro localizador é qual o valor que deseja localizar no seu caso será o valor 11.
int BuscaLinearR(int cont, int[] list, int localizar) { if (list.Length == cont) return -1; else if (list[cont] != localizar) return BuscaLinearR(cont + 1, list, localizar); else return cont; }
edit
Lembrando que se não localizar o valor retornar a posição -1.
Uma imagem vale mais do que mil palavras, mas ocupa 3 mil vezes mais espaço em disco
- Editado Alexsandro Bertoncini quinta-feira, 21 de maio de 2015 00:08
- Marcado como Resposta Porter Porter sexta-feira, 22 de maio de 2015 12:02
Todas as Respostas
-
-
coloquei os parametros, nao da erro de compilação, mas nao retorna a posição que o numero 11 ocupa.
int BuscaLinearR(int x, int n, int v[], int e)
{
if(e == n)
{
return n;
}
if(v[e] == x)
return e;
else
{
int aux = BuscaLinearR(x, n, v, e);
}
}
int main(void)
{
int e, x, resultado, aux;
int v[10] = {7,-33,24,2,-14,11,17,89,-20,0 } ;
x = 11;
int n = 10;
printf("Entre com um numero: ");
scanf("%d",&x);
resultado = BuscaLinearR(x, n, v, e);
printf("O resultado eh: %d",resultado);
getch();
return(0);
}
-
Amigo as variaveis está meia confusa de entender, e pq precisa de 4 parametros?
segue um exemplo do metodo recursivo que criaria para localizar um valor.
o parametro cont seria o contador para fazer a chamada pode colocar como 0 ou a posição no qual quer iniciar a busca, o parametro list sera a lista no qual deseja procurar no seu caso seria sua variavel "v", e o parametro localizador é qual o valor que deseja localizar no seu caso será o valor 11.
int BuscaLinearR(int cont, int[] list, int localizar) { if (list.Length == cont) return -1; else if (list[cont] != localizar) return BuscaLinearR(cont + 1, list, localizar); else return cont; }
edit
Lembrando que se não localizar o valor retornar a posição -1.
Uma imagem vale mais do que mil palavras, mas ocupa 3 mil vezes mais espaço em disco
- Editado Alexsandro Bertoncini quinta-feira, 21 de maio de 2015 00:08
- Marcado como Resposta Porter Porter sexta-feira, 22 de maio de 2015 12:02
-