Ir al contenido principal

PRÁCTICA SOBRE FUNCIONES

¿Qué son?

Se dice que una función es recursiva cuando dentro de su bloque de sentencias hay una llamada a la propia función.

En principio cualquier función puede hacerse una llamada a sí misma, sin embargo, tiene que estar especialmente diseñada para que funcione correctamente, ya que al llamarse a sí misma provoca que esta se vuelva a ejecutar, y dentro de sus instrucciones se vuelve a llamar, creando un bucle que si no está controlado se vuelve infinito.

Por lo tanto, una función recursiva forma un bucle al ser llamada a sí misma. Este bucle debe ser controlado de alguna manera para poder salir de él y no caer en estructuras indeseadas como bucles infinitos o estructuras que se autorreplican indefinidamente.

Ejemplo 1

El siguiente ejemplo pide al usuario que pulse una tecla numérica. Mediante una función comprobamos la tecla pulsada. Si esta es un número se sale de la función, pero si no lo es vuelve a pedir que se pulse una tecla, se llama a sí misma para volver a comprobarlo.


Resultados


Ejemplo 2

En este ejemplo vamos a hacer que el usuario escriba una frase y nosotros la repetimos un determinado número de veces.

Evidentemente sería mucho más fácil resolver el problema utilizando un bucle, pero aquí se trata de ver cómo se puede resolver también mediante una función recursiva. Veamos el ejemplo:


Resultados


Ejemplo 3

El factorial de un número se define como la multiplicación de ese número por todos los que son menores que él. Sí lo los números naturales (enteros positivos) pueden tener factorial. Por ejemplo, el factorial de 4 se define como 4*3*2*1. El factorial de 6 es 6*5*4*3*2*1.

 Matemáticamente la operación factorial se define escribiendo un signo de admiración detrás del número: 4! = 4*3*2*1.

Por lo tanto, los números negativos no tienen factorial, y además el factorial de cero es 1.

Con todo esto vamos a hacer una función recursiva que calcule el factorial de un número. El programa será el siguiente:

El programa calcula el factorial del número. Para números negativos devuelve el cero. Para el 0 y el 1 devuelve el 1, y para los demás números positivos, mediante la recursividad, vamos multiplicando cada número por el inmediatamente menor que si mismo hasta llegar a uno, para devolver el factorial.

Resultados


Referencias
http://cpp.aprende-web.net/basico/basico5/basico5_6.php

 

Comentarios

Entradas populares de este blog

BUSCANDO CREER

 

PRINCIPALES DIAGRAMAS UML

Una clase UML representa un concepto dentro del sistema que se está modelando. Es una descripción de un conjunto de objetos que comparten los mismos atributos, operaciones, métodos, relaciones y semántica. Una clase se representa por un rectángulo, con el borde externo continuo, con tres compartimentos separados mediante líneas horizontales. El compartimento superior tiene el nombre de la clase y otras propiedades generales (incluido su estereotipo); el compartimento intermedio contiene el listado de atributos; el compartimento inferior contiene una lista de operaciones. Los compartimentos de atributos y operaciones se pueden eliminar para simplificar el diagrama. La eliminación no indica que no existan atributos u operaciones.  Relaciones Asociación :  Representa una relación estructural entre dos o más clases Agregación :  Indica una relación "todo-parte" entre una clase "contenedora" y una clase "contenida". La parte puede existir independientemente del

PRESENTACIÓN REDES DE DATOS II

  ¿Qué es? Las Redes de Datos II  proporciona a los estudiantes una comprensión más profunda y especializada de los principios, protocolos y tecnologías que sustentan las redes de datos modernas, permitiéndoles abordar desafíos más complejos en el diseño, implementación y gestión de infraestructuras de red avanzadas. Competencia general Diseñar planes de direccionamiento de redes de datos de área amplia, considerando su seguridad a partir de los requerimientos del cliente para el diseño, protocolos de comunicación y tecnologías adecuadas para ambientes distribuídos. Elementos de competencia Determinar el proceso de diseño de una red de datos IPv4, a partir del análisis y evaluación de cada uno de los componentes y las aplicaciones que la conforman  Formular una red de datos, integrada, identificando los protocolos y capas de modelo OSI y TCP/IP. Planear el protocolo IPv6 su implementación, estableciendo el Iot como tecnología referencia en aplicaciones en redes. Video de introducción