Funciones recursivas en C


23 de Agosto del 2020

Hola, buenas noches.

 

Soy nuevo programando en C, y necesito ayuda.

 

Estoy atorado con un problema.

Necesito desarrollar un programa que le permita al usuario multiplicar k números usando una función recursiva.

El usuario dará primero el número k de números que quiere múltiplicar, después debe solicitarle el valor de cada uno de esos k números.

Espero y puedan ayudarme.

Saludos.

 


David Carrero
12 de Agosto del 2026

Hola,

La clave de la recursión aquí es partir el problema en «multiplicar el primer número por el resultado de multiplicar los k-1 restantes», hasta llegar a un caso base donde ya no queda nada que multiplicar (y ahí devuelves 1, el neutro de la multiplicación).

Un ejemplo completo:

#include <stdio.h>

long multiplicar(int numeros[], int k, int indice) {
    if (indice == k) {
        return 1;
    }
    return numeros[indice] * multiplicar(numeros, k, indice + 1);
}

int main() {
    int k;
    printf("Cuantos numeros quieres multiplicar? ");
    scanf("%d", &k);

    int numeros[k];
    for (int i = 0; i < k; i++) {
        printf("Numero %d: ", i + 1);
        scanf("%d", &numeros[i]);
    }

    printf("El resultado es: %ldn", multiplicar(numeros, k, 0));
    return 0;
}

Fíjate en dos cosas: el caso base (indice == k) es el que corta la recursión, y cada llamada hace «menos trabajo» que la anterior (avanza el índice), así que tarde o temprano llegas al caso base. Si alguna vez te quedas con una función recursiva que no compila o se cuelga, casi siempre es porque falta el caso base o porque la llamada recursiva no se acerca a él.

Un saludo,
David Carrero