Ir ao conteúdo
  • Cadastre-se

C Problemas com a recursividade


Arima
Ir à solução Resolvido por isrnick,

Posts recomendados

Ola, boa noite pessoal. vocês poderiam me explicar como funciona a recursividade dessa função?? Ela serve para caminhar por uma arvore binaria e imprimir (esquerda, raiz, esquerda) in order. Mas eu nao entendo como funciona a recursividade dela. E o caminhamento pela direita nao deveria haver um printf tambem?? E o "return", por que esta vazio??

 

void Central(TipoApontador p){
	if(p == NULL) return;
	Central(p−>Esq);
	printf("%ld \n", p−>Reg.Chave);
	Central(p−>Dir);
}

 

Link para o comentário
Compartilhar em outros sites

O return está sem nada porque essa função não retorna nada, ela é do tipo void. No if se o p não existe simplesmente retona sem fazer nada dentro da função.

 

No printf ele não tá imprimindo o p da esquerda nem o da direita, ele tá imprimindo o Reg.Chave do p atual da função. Ele só precisa imprimir o p atual 1 vez, logo não precisa ter outro printf.

 

Mas observe que ele entra em todos a esquerda antes de imprimir qualquer p, logo o primeiro p impresso será o p mais a esquerda possível.

 

Se ainda estiver com dúvida, tente fazer uma árvore pequena num papel e fazer um "teste de mesa".

Link para o comentário
Compartilhar em outros sites

  • Solução

Ele vai entrando a esquerda, até tentar entrar novamente e não existir mais nada, nesse caso ele apenas retorna como mencionei acima, quando retornou ele finalmente imprime o Reg.Chave do último p válido encontrado, e aí entra a direita...

 

Como falei o melhor método pra entender é você fazer o "teste de mesa" no papel para visualizar.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...