Pular para o conteúdo

Padrão 3: encolher o vetor

objetivo Olhar o último elemento e passar o resto adiante.

Com , o problema menor é o mesmo vetor com um elemento a menos. Você passa n - 1 e olha o v[n - 1].

O caso base costuma ser n == 0, vetor vazio. O valor devolvido é o neutro da operação: 0 pra soma, 1 pro produto, 1 pra pergunta do tipo todos são.

Quando o enunciado garante pelo menos um elemento, como achar o menor, o caso base vira n == 1 e devolve v[0].

Como a recursão olha de trás pra frente, buscas desse tipo encontram a ÚLTIMA ocorrência, não a primeira.

exemplo.cclique numa linha pra entender ela

Onde todo mundo escorrega

  • É v[n - 1], nunca v[n]. Com v[n] você lê fora do vetor.
  • O vetor passado é sempre o mesmo. Quem diminui é o tamanho.

Desafio

Escreva menorVetor, que devolve o menor elemento de um vetor com pelo menos um elemento.

int menorVetor(int v[], int n)
o que a função tem que devolver
chamadasaída esperada
v = {4, 2, 9, 1, 7}menorVetor(v, 5)1
v = {8}menorVetor(v, 1)8
v = {-3, 5, -7}menorVetor(v, 3)-7
a sua função
linha 1
int menorVetor(int v[], int n) {
    // caso base: um elemento so

    // compare o ultimo com o menor do resto
}

Ctrl+Enter (Cmd+Enter no Mac) roda. Esc sai do editor.

aperte Rodar pra ver a saída aqui
Ver a pilha de chamadas passo a passo

Mostra o que o seu código faz em cada chamada. É uma simulação didática, não substitui o botão de testar.

Dicas

Tenta sozinho primeiro. Travou de verdade, abre a primeira.