Faça uma função recursiva que receba um número inteiro positivo par N e imprima todos os números pares de 0 até N em ordem decrescente.
Passo 1
O enunciado pede uma função recursiva que receba um inteiro positivo par
e imprima todos os números pares de
até
em ordem decrescente. Vamos usar o conceito de recursão, definindo um caso base (quando
) e um caso recursivo (quando
) para “descer” de
até
de dois em dois.
Passo 2
Definir o caso base da recursão. Quando
, não há mais números pares abaixo de zero que interessem; então nesse momento imprimimos
e encerramos a chamada recursiva. Isso evita chamadas infinitas.
Passo 3
Definir o caso recursivo. Para
, primeiro imprimimos o próprio
, depois invocamos a função recursivamente passando
. Como
é par,
também será par até o caso base.
Passo 4
Escrever a função em C (ou pseudocódigo equivalente), respeitando a pré-condição de que
é par e não negativo. A função testa se
é zero; caso contrário, faz o “print” e chama a si mesma com
.
Passo 5
Exemplo de chamada: se
, a sequência impressa será
Resposta
#include <stdio.h>
// Função recursiva que imprime pares de \(0\) até \(N\) em ordem decrescente.
// Pré-condição: \(N\) é inteiro, \(N \geq 0\) e \(N\) é par.
void imprimeParesDec(int N) {
if (N == 0) {
printf("%d\n", 0);
} else {
printf("%d\n", N);
imprimeParesDec(N - 2);
}
}
// Exemplo de uso
int main() {
int N = 8; // pode ser qualquer par \(\geq 0\)
imprimeParesDec(N);
return 0;
}