Faça uma função recursiva que receba um número inteiro positivo Ne e imprima todos os números naturais de 0 até N em ordem decrescente.
Passo 1
O enunciado pede uma função recursiva que, dada uma entrada inteira positiva N, imprima todos os números naturais de 0 até N em ordem decrescente (ou seja, de N a 0). O conteúdo usado aqui é recursão, que exige definir um caso-base para interromper chamadas e um caso recursivo que reduz o problema.
Passo 2
Precisamos primeiro identificar o caso-base da nossa recursão, que é a situação em que não faremos mais chamadas recursivas. Como queremos parar quando chegarmos a 0, podemos usar o teste
if (n == 0)
para imprimir 0 e encerrar.Passo 3
Em seguida, definimos o caso recursivo: sempre que
n > 0
, imprimimos o valor atual n
e fazemos uma chamada recursiva com n - 1
. Isso garante que em cada nível da pilha de chamadas o valor diminui até atingir o caso-base.Passo 4
Juntando caso-base e caso recursivo, escrevemos a função completa. A função imprime primeiro
n
, depois chama a si mesma com n-1
. Quando n
chega a 0, imprime 0 e retorna, encerrando toda a recursão.Resposta
void imprimeDecrescente(int n) {
if (n == 0) {
printf("%d\n", 0);
return;
}
printf("%d\n", n);
imprimeDecrescente(n - 1);
}
if (n == 0) {
printf("%d\n", 0);
return;
}
printf("%d\n", n);
imprimeDecrescente(n - 1);
}