// Sesión 1: recursión sobre arreglos y cadenas. Ninguna función usa ciclos.
#ifndef RECURSION_H
#define RECURSION_H

#include <stddef.h>

// La suma de los n elementos que empiezan en a. Un arreglo vacío suma 0.
long long array_sum(const int *a, size_t n);

// El mayor de los n elementos que empiezan en a. Requiere n >= 1.
int array_max(const int *a, size_t n);

// Devuelve 1 si s se lee igual en los dos sentidos, y 0 si no. Distingue mayúsculas.
// La cadena vacía y las de un carácter son palíndromos.
int is_palindrome(const char *s);

// Cuántas veces aparece c en s. Requiere c != '\0'.
size_t count_char(const char *s, char c);

// Invierte s en su propio lugar. No reserva memoria.
void reverse_string(char *s);

#endif
