Recursividad: Sumatoria Recursiva de un array en C
Posted on Miércoles, mayo 5th, 2010 at 13:07Para hacer una función recursiva en c. solo tenemos que llamarla dentro de si misma. Hay que tener en cuenta que aparte de la llamada a si misma tiene que en algún momento cortar la recursividad para no generar un loop.
En este caso la condición de salida es que cuando el numero de elementos llega a 0. Se deja de llamar a la función y se devuelve 0. En este momento, se hacen todas las sumas de los elementos y se le entrega a la variable “sumatoria” del main, el resultado de la suma.
En el siguiente código de ejemplo, se carga un vector con n elementos enteros y calcular la suma de sus elementos en forma recursiva
#include <stdio.h> #include <conio.h> #include <string.h> // CONSTANTES #define TAM_ARR_MAX 20 int main(int argc, char **argv) { //DECLARACION DE VARIABLES int VEC1[TAM_ARR_MAX], VEC2[TAM_ARR_MAX]; int tam_1; int sumatoria; printf("#### 1 #####\n"); tam_1 = ask_tam(); //Le pregunta al usuario que tamaño tendra el vector. arr_cargar(VEC1,tam_1); //El usuario Carga el vector. arr_mostrar(VEC1,tam_1); //Se muestra el vector Cargado sumatoria = rec_arr_sumatoria(VEC1,tam_1); // SUMATORIA DEL VECTOR EN FORMA RECURSIVA printf("\nLa sumatoria de los %d elementos del array es: %d",tam_1,sumatoria); printf("\n\n****************************\n"); //Cierro main. //getch(); return 0; } /************************************/ /* FUNCIONES */ /************************************/ int ask_tam(){ int n; printf("\nIngrese el tamanio que tendra el array (menor que %d):",TAM_ARR_MAX); do{ scanf("%d",&n); }while(n<1); return n; } void arr_mostrar(int X[TAM_ARR_MAX], int n){ int i; printf("\n"); for(i=0;i<n;i++){ printf("[%d]:%d",i,X[i]); if(i<n) printf("; "); } printf("\n"); } void arr_cargar(int X[TAM_ARR_MAX], int n){ int i; for(i=0;i<n;i++){ printf("\nIngrese [%d]:",i); scanf("%d",&X[i]); } } int rec_arr_sumatoria(int X[], int i){ if(i==0) return 0; else return rec_arr_sumatoria(X,i-1)+X[i-1]; }

