Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Recursividade - maior valor no vetor


Diego Menezes

Pergunta

Olá, estou tentando resolver o seguinte exercício:

Dado um vetor de dez posições, preenchidos com números aleatórios entre 0 e 20, faça uma função recursiva que encontre o maior valor desse vetor.

Até agora fiz isso:

#include <iostream>
#include <stdlib.h>

using namespace std;

void procura (int vetor [], int i, int maior) {


    if (i < 10) {
        if (vetor [i] > maior) {
            maior = vetor [i];
        }
        i++;
        procura (vetor,i,maior);
    }
    cout << "\nMaior numero: " << maior;

}

int main()

{
    srand (time(NULL));
    int vetor [10];
    int i = 0;
    int maior = 0;

    for (i = 0; i < 10; i++) {
        vetor [i] = rand () % 21;
        cout << vetor [i] << " | ";
    }

    procura (vetor,i,maior);
}

O valor do maior número é sempre 0 :S

Não to conseguindo identificar o erro...To penando um pouco em recursividade

HELP!

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

eu estou comecando agora em c++ , mas posso tentar ajudar

vetor = rand () % 21;

a funcao rand() retorna um numero pseudo-aleatorio , se voce fizer uma sequencia varias vezes podera perceber certas coincidencias, utilize a funcao random(21);

pra gerar numeros aleatorio de 0 a 20, a esqueci , utiliza a funcao randomize() antes pra inicializar a funcao random

Editado por ericktb
Link para o comentário
Compartilhar em outros sites

  • 0

Na função procura não tem muita coisa errada não.

mas note que na função main você não precisava da variável maior, visto que você irá chamar a função sempre com o maior número sendo 0 (como isso não muda, você não precisa de uma variável)

Então observando o erro anterior poderíamos trocar essa linha:

procura (vetor,i,maior);
Por:
procura (vetor,i,0);
Isso não está prejudicando o script, mas não é recomendado ficar alocando variáveis na memória sem motivo. Agora observe um outro erro: A variável i foi declarada antes do bloco for, ou seja, está no escopo da função main. Note que após percorrer o loop ela sempre termina com valor 9. Então ao chamar a função procura os parâmetros passados ficam assim:
procura (vetor,9,0);
Como a variável começa em 9, a função não irá procurar o maior valor corretamente. Solução: Substitua a linha:
procura (vetor,i,maior);
Por:
procura (vetor,0,0);

Depois disso o programa funcionará corretamente. Mas está mostrando o maior valor a cada chamada da função. Acho que isso não foi intencional.

Você tem duas soluções:

  1. Colocar um return no final do bloco if (i < 10)
  2. Só mostrar o maior valor quando i for 10, ou seja, criar um bloco else e mostrar o resultado ali dentro

Poste aí se funcionou !

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...