elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C] Llenar arreglo con recursividad
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] Llenar arreglo con recursividad  (Leído 11,661 veces)
edr89

Desconectado Desconectado

Mensajes: 105


Ver Perfil
[C] Llenar arreglo con recursividad
« en: 4 Noviembre 2013, 19:31 pm »

Hola, he buscado información sobre recursividad pero en su mayoria son algoritmos de busqueda y ordenamiento, debo crear un arreglo de tamaño n e imprimirlo en pantalla de modo que forme un rectangulo, es decir, si el usuario elige 4, el resultado es:

1 1 1 1
1 1 1 2
1 1 2 3
1 2 3 4


Cada elemento se guarda en el arreglo de forma recursiva, cómo funciona esto?.

Poco he hecho con recursividad y estoy mas acostumbrado a trabajar con iteraciones, en este caso se me ha ocurrido trabajar con ciclos for() para ir procesando renglon por renglon pero no es recursividad.

   1. Si la funcion se llama a si misma el arreglo se crea dentro o fuera de la funcion? es local o global?
   2. Puedo reservar espacio dinamico para el arreglo del tamaño que indica el usuario? es decir:
Código
  1. x = malloc(sizeof(int) * n);
   3. Al llamar a la función el arreglo se pasa como parametro? si es que se crea fuera de la funcion
   
Mi problema es desarrollar el algoritmo para guardar la secuencia de numeros , por favor si alguien me puede orientar se lo agradeceré.

Saludos!


En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: [C] Llenar arreglo con recursividad
« Respuesta #1 en: 4 Noviembre 2013, 21:30 pm »

Igual no es la mejor solución pero funcionar funciona:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void Procesar(int *p, int nelem, int nrestantes);
  5.  
  6. int main()
  7. {
  8. int nelem, i;
  9. int *arreglo;
  10.  
  11. printf("Introduce la cantidad de elementos: ");
  12. scanf(" %d", &nelem);
  13. arreglo=malloc(nelem*sizeof(int));
  14.  
  15. // inicializacion
  16. for (i=0; i<nelem; i++) arreglo[i]=1;
  17.  
  18. // funcion recursiva para procesar y mostrar por pantalla el arreglo
  19. Procesar(arreglo, nelem, nelem);
  20.  
  21. free(arreglo);
  22. return 0;
  23. }
  24.  
  25. void Procesar(int *p, int nelem, int nrestantes)
  26. {
  27. int i;
  28.  
  29. // procesar arreglo
  30. for (i=0; i<(nelem-nrestantes); i++) p[nelem-1-i]++;
  31.  
  32. // imprimirlo
  33. for (i=0; i<nelem; i++) printf("%d", p[i]);
  34. printf("\n");
  35.  
  36. // procesar siguiente etapa
  37. if (nrestantes>1) Procesar(p, nelem, nrestantes-1);
  38. }

Saludos!


En línea

edr89

Desconectado Desconectado

Mensajes: 105


Ver Perfil
Re: [C] Llenar arreglo con recursividad
« Respuesta #2 en: 6 Noviembre 2013, 04:15 am »

Igual no es la mejor solución pero funcionar funciona

cambie un para de cosas para poder entender el proceso y me quedo algo asi:
Código
  1. void Procesar(int *p, int nelem, int nrestantes)
  2. {
  3.    int i=0,j=0;
  4.    // procesar arreglo
  5.    for(i=0;i<(nelem - (nelem - nrestantes));i++)
  6.    {
  7.        p[i]=1;
  8.    }
  9.    if((nelem - nrestantes) !=0)
  10.        {
  11.            for(i=nrestantes,j=2;i<nelem;i++)
  12.            {
  13.                p[i]= (j);
  14.                j++;
  15.            }
  16.        }
  17.    for (i=0; i<nelem; i++)
  18.    {
  19.        printf("%d ", p[i]);
  20.    }
  21.    putchar('\n');
  22.    // procesar siguiente etapa
  23.    if (nrestantes>1)
  24.    {
  25.        Procesar(p, nelem, nrestantes-1);
  26.    }
  27. }
  28.  
  29.  
  30.  
« Última modificación: 6 Noviembre 2013, 08:23 am por edr89 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Recursividad
Java
rjrn 8 10,123 Último mensaje 17 Marzo 2009, 19:33 pm
por weirdtyping
recursividad
Ejercicios
Choclito 0 3,743 Último mensaje 12 Mayo 2009, 04:47 am
por Choclito
ayuda a llenar una pila automaticamente ya tengo el vaciado solo me falta llenar
Java
smallville121 0 3,220 Último mensaje 21 Mayo 2012, 16:40 pm
por smallville121
LLenar arreglo con un archivo txt « 1 2 »
Programación C/C++
Angel774 18 14,606 Último mensaje 8 Junio 2016, 03:14 am
por Angel774
Como llenar un arreglo a partir de un json
PHP
d91 1 3,280 Último mensaje 10 Febrero 2017, 20:48 pm
por mchojrin
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines