Diego Menezes Postado Outubro 12, 2009 Denunciar Share Postado Outubro 12, 2009 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 :SNão to conseguindo identificar o erro...To penando um pouco em recursividadeHELP! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ericktb Postado Outubro 12, 2009 Denunciar Share Postado Outubro 12, 2009 (editado) eu estou comecando agora em c++ , mas posso tentar ajudarvetor = 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 Outubro 12, 2009 por ericktb Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Outubro 12, 2009 Denunciar Share Postado Outubro 12, 2009 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:Colocar um return no final do bloco if (i < 10)Só mostrar o maior valor quando i for 10, ou seja, criar um bloco else e mostrar o resultado ali dentroPoste aí se funcionou ! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diego Menezes Postado Outubro 13, 2009 Autor Denunciar Share Postado Outubro 13, 2009 Agora sim :DMuito obrigado, Jonathan. Funcionou direitinho.Abç! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Outubro 13, 2009 Denunciar Share Postado Outubro 13, 2009 Ok então !Qualquer coisa posta aí.Obs.:O tópico foi marcado como Resolvido. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Diego Menezes
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:
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
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.