Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
brunopl65

Linguagem C - Recursão

Recommended Posts

-->Estou com dúvida no código abaixo.Esse código não fui eu que fiz, mas sei que esse código vai retornar o maior valor.

-->Especificamente minha dúvida está no funcionamento do código,por exemplo aqui :"if (x>v[n-1])" Já que n é o mesmo contador para "x" e para "v", Como é feita então a comparação para saber qual numero é o maior?

#include<stdio.h>
#include<stdlib.h>


int maximo1(int n,int v[]){
if(n==1)
return v[0]; /*problema pequeno*/
else{
int x;
x=maximo1(n-1,v);/*instância menor do problema*/
if (x>v[n-1])
return x;
else
return v[n-1];
}
}


int main(){
int i,VET[]={11,22,33};
int MAX;
i=3;
MAX=maximo1(i,VET);
printf("\nMaior valor=%d\n",MAX);
system("Pause");
}

Editado por brunopl65

Compartilhar este post


Link para o post
Compartilhar em outros sites

hmmmmm dei uma lida ... mas ainda estou meio confuso quanto ao código...

mas acho que entendi o que ele faz....

Ele criou uma função maximo1 só que... ele percorre o vetor de traz pra frente...

Ex. o vetor dele tem 3 posições

portanto as posições são: v[0],v[1],v[2]

por isso ele tem com entrada i = 3 e ele faz n - 1 para que o vetor começe na posição 2...

SE o n for 1... ele não pode fazer um decremento pois nao existe posição v[-1] no vetor... por isso este if:

if(n==1)

return v[0]; /*problema pequeno*/

Mas se não ele vai atribuir para a variável xo valor da proxima recursão ( isso é meio dificl explicar)

ele entrou a primeira vez com i = 3 portanto v[2] ele joga para a variável x o próximo número.. tipo no caso seria i= 2 portanto v[1]

Dai ele faz a comparação:

if (x>v[n-1])

No caso X seria I = 2 e V[1]

que seria comparado com: v[2]

Se X for maior..... ele retorna X... senão v[n-1].

Argg... ficou confuso mas ve se voce entende...=X

Desculpa ter digitado demais =X

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×