Sunteți pe pagina 1din 4

¿Qué es recursividad?

Se dice que una función es recursiva cuando se define en función de si misma.


No todas las funciones pueden llamarse a si mismas, sino que deben estar diseñadas
especialmente para que sean recursivas, de otro modo podrían conducir a bucles
infinitos, o a que el programa termine inadecuadamente.
Tampoco todos los lenguajes de programación permiten usar recursividad.

Ventajas y Desventajas

Ventajas:

 Soluciona problemas recurrentes


 Son programas cortos.
 No es necesario definir la secuencia de pasos exacta para resolver el problema.
 Soluciones simples, claras.
 Soluciones elegantes.
 Soluciones a problemas complejos.

Desventajas:

 Creación de muchas variables


 Puede necesitar mucha memoria por lo cual podría ser menos eficiente.
 Sobrecarga asociada con las llamadas a subalgoritmos
 Una simple llamada puede generar un gran número de llamadas Recursivas. (Fact(n)
genera n llamadas recursivas)
 El valor de la recursividad reside en el hecho de que se puede usar para resolver
problemas sin fácil solución iterativa.

 Programa en C++ que calcula el producto de dos números de forma recursiva.


Los números a multiplicar se leen por teclado.

int producto(int a, int b)


{
if(a==0 or b==0)
return 0;
else
{
return a+producto(a,b-1);
}
}
 Programa en c++ que calcula el factorial de un número ingresado.
int facrecursivo (int nr)

//int factorial=1;

if(nr==0)

return 1;

else

return(nr*facrecursivo(nr-1));

¿Qué es una estructura?

Al contrario que los arrays, las estructuras nos permiten agrupar varios datos, que
mantengan algún tipo de relación, aunque sean de distinto tipo, permitiendo
manipularlos todos juntos, usando un mismo identificador, o cada uno por separado.
Las estructuras son llamadas también muy a menudo registros, o en inglés records.
Tienen muchos aspectos en común con los registros usados en bases de datos. Y
siguiendo la misma analogía, cada objeto de una estructura se denomina a menudo
campo, o field.
Sintaxis:

struct [<identificador>] {
[<tipo> <nombre_objeto>[,<nombre_objeto>,...]];
} [<objeto_estructura>[,<objeto_estructura>,...];

Ventajas y desventajas

Ventajas
Agrupan varios datos de distintos tipos que se relacionan entre sí para hacer todo más ordenado.

Los datos declarados en una estructura son una especie de datos globales los cuales se los puede
utilizar en cualquier parte del programa.

Desventajas

Ocupa más espacio de memoria al ser ejecutado.

Cuando se utilizan arreglos se debe establecer un límite de elementos o caracteres que pueden
ser ingresados.
Qué son estructuras anidadas y dos ejemplos de sus usos.

Es posible crear estructuras que tengan como miembros otras estructuras. Esto
tiene diversas utilidades, por ejemplo, contar con estructuras de datos más
ordenadas. Imaginemos la siguiente situación: una tienda de música quiere hacer
un programa para el inventario de los discos, cintas y cd's. Para cada título se
quiere conocer las existencias en cada soporte (cinta, disco, cd), y los datos del
proveedor. Podría pensarse en una estructura así:

struct inventario {
char titulo[30];
char autor[40];
int existencias_discos;
int existencias_cintas;
int existencias_cd;
char nombre_proveedor[40];
char telefono_proveedor[10];
char direccion_proveedor[100];
};

Sin embargo, utilizando estructuras anidadas se podría hacer de esta otra forma
más ordenada:

struct est_existencias {
int discos;
int cintas;
int cd;
};

struct est_proveedor {
char nombre_proveedor[40];
char telefono_proveedor[10];
char direccion_proveedor[100];
};

struct est_inventario {
char titulo[30];
char autor[40];
struct est_existencias existencias;
struct est_proveedor proveedor;
} inventario;

Otro ejemplo seria para ingresar datos de una persona y su fecha de nacimiento para lo cual se
ingresan dos estructuras.

struct fecha

int anio, mes, dia;


};

struct persona

char Nombre[20];

fecha fecha_nace;

char sexo;

fecha edad;

};

S-ar putea să vă placă și