none
duvida com recurssividade RRS feed

  • 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);
    }

         
    quarta-feira, 20 de maio de 2015 18:59

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


    quinta-feira, 21 de maio de 2015 00:08

Todas as Respostas

  • Erro: int aux = BuscaLinearR(); 

    Falta os parametros

    quarta-feira, 20 de maio de 2015 19:34
  • 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);
    }



         
    quarta-feira, 20 de maio de 2015 20:03
  • 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


    quinta-feira, 21 de maio de 2015 00:08
  • obrigado Alexsandro, deu certo.
    sexta-feira, 22 de maio de 2015 12:02