Crie um programa que receba um vetor de números reais com 100 elementos. Escreva uma função recursiva que inverta a ordem dos elementos presentes no vetor.
Passo 1
A questão pede para criar um programa que leia um vetor de 100 números reais e, usando uma função recursiva, inverta a ordem dos elementos desse vetor. Vamos trabalhar com recursão para trocar elementos de forma simétrica até o meio do vetor.
Passo 2
Precisamos definir uma função recursiva com três parâmetros: o vetor de números reais, o índice de início (início) e o índice de fim (fim). Essa função será responsável por fazer a troca e chamar ela mesma para avançar os índices.
Passo 3
O caso base da nossa recursão ocorre quando o índice de início já não é menor que o índice de fim (início >= fim). Nesse caso, não há mais pares para trocar, e a função retorna sem fazer nada.
Passo 4
No passo recursivo, trocamos o elemento vetor[início] com vetor[fim] usando uma variável temporária e em seguida chamamos a função recursiva com início+1 e fim-1, aproximando os índices para o centro do vetor.
Passo 5
Por fim, no programa principal (main), declaramos um vetor com 100 elementos, lemos os valores via scanf, chamamos a função recursiva para inverter o vetor e por último exibimos o vetor invertido com printf.
Resposta
#include <stdio.h>
#define N 100
#define N 100
void inverter(float v[], int inicio, int fim) {
// Caso base: se início >= fim, não há mais trocas a fazer
if (inicio < fim) {
float temp = v[inicio];
v[inicio] = v[fim];
v[fim] = temp;
// Chamada recursiva aproximando os índices
inverter(v, inicio + 1, fim - 1);
}
}
// Caso base: se início >= fim, não há mais trocas a fazer
if (inicio < fim) {
float temp = v[inicio];
v[inicio] = v[fim];
v[fim] = temp;
// Chamada recursiva aproximando os índices
inverter(v, inicio + 1, fim - 1);
}
}
int main() {
float vetor[N];
// Leitura de 100 números reais
for (int i = 0; i < N; i++) {
scanf("%f", &vetor[i]);
}
// Inverte o vetor de forma recursiva
inverter(vetor, 0, N - 1);
// Impressão do vetor invertido
for (int i = 0; i < N; i++) {
printf("%.2f “, vetor[i]);
}
printf(”\n");
return 0;
}
float vetor[N];
// Leitura de 100 números reais
for (int i = 0; i < N; i++) {
scanf("%f", &vetor[i]);
}
// Inverte o vetor de forma recursiva
inverter(vetor, 0, N - 1);
// Impressão do vetor invertido
for (int i = 0; i < N; i++) {
printf("%.2f “, vetor[i]);
}
printf(”\n");
return 0;
}