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.
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