SlideShare una empresa de Scribd logo
1 de 6
Descargar para leer sin conexión
FACTORIAL
EN C++
PÁGINA 02
En este tutorial aprenderemos a hacer una función de factorial en c++
mediante la estructura de control for y también aplicando
recursividad. Además veremos cuáles son las ventajas de usar
recursividad sobre algunas estructuras de control iterativas.
Primero veamos en qué consiste la función factorial. El factorial de un
número es la multiplicación de los números que están comprendidos
entre 1 hasta dicho número. Para expresar el factorial se suele utilizar
la notación n!. Así la definición es la siguiente:
n! = 1 x 2 x 3 x 4 x 5 x ... x (n-1) x n
Estructura de control for
Un bucle for hace que una instrucción o bloque de instrucciones se
repita un número determinado de veces mientras se cumpla la
condición.
for(inicializacion; condicion; incremento/decremento) {
instrucción 1;
...........
instrucción N;
}
zona de inicialización
zona de condición
zona de incremento ó decremento.
Se inicializa la variable o variables de control.
Se evalúa la condición.
Si la condición es cierta se ejecutan las instrucciones. Si es falsa,
finaliza la ejecución del bucle y continúa el programa en la
siguiente instrucción después del for
Se actualiza la variable o variables de control
(incremento/decremento)
Se pasa al punto 2.
A continuación de la palabra for y entre paréntesis deben haber
siempre tres zonas separadas por punto y coma:
En alguna ocasión puede no ser necesario escribir alguna de ellas. En
ese caso se dejarían en blanco, pero los punto y coma deberían
aparecer.
El funcionamiento de un bucle for es el siguiente:
1.
2.
3.
4.
5.
Ahora veremos el ejemplo del factorial implementado en c++:
PÁGINA 03
PÁGINA 04
#include
using namespace std;
int main(void){
int i;
int fact=1;
int numero;
cout<<"ingresa un numero: ";
cin>>numero;
if(numero<0) fact =0;
else if(numero==0) fact=1;
else{
for (i = 1; i <= numero; i++){
fac = fact*i;
}
}
cout<<"Factorial de "<
system("pause");
}
Como podemos observar en el ejemplo, primero inicializamos nuestras
variables i, fact y numero.
Después de ingresar el número por consola procedemos a evaluarlo. Si
este es menor a cero, entonces el factorial también será 0, si es cero
nuestro factorial será 1, caso contrario procedemos a calcular el
factorial con el for.
PÁGINA 05
En nuestro for inicializamos nuestra variable iterativa i en 1, esta se
incrementará en 1 por cada iteración hasta que sea igual a número,
dentro de las instrucciones por cada iteración se efectúa una
multiplicación de todos los valores que va tomando i, en nuestro caso
de 1 hasta el número y los va almacenando en la variable fact.
Una vez terminado el programa, mostramos en pantalla nuestro
resultado.
Recursividad
En palabras simples, la recursividad es cuando una función tiene la
característica de poder llamarse a sí misma dentro de sus
instrucciones; gracias a esto, podemos utilizar a nuestro favor la
recursividad en lugar de la iteración para resolver determinados tipos
de problemas.
A continuación veremos el ejemplo de la función factorial usando
recursividad:
#include
using namespace std;
int factorial(int n) {
if(n < 0) return 0;
else if(n > 1) return n*factorial(n-1);
return 1;
}
int main(void) {
int numero;
cout<<"ingresa un numero: ";
cin>>numero;
cout<<"Factorial de "<;
}
PÁGINA 06
Como podemos observar en nuestro ejemplo nuestra función factorial
recibe un valor n, evaluamos dicha variable, si esta es menor que cero
la función nos retorna el valor 0, si n es mayor que uno llamamos otra
vez a nuestra función factorial pero con n-1 y a esto lo multiplicamos
por n, esto se repetirá hasta que n llegue a tomar el valor de 1.
La mejor forma de entenderlo podría ser:
5!
n=5 -> factorial(5) -> 5*factorial(4) -> 5*4*factorial(3) ->
5*4*3*factorial(2) ->5*4*3*2*factorial(1) -> 5*4*3*2*1 -> 120
Principio importante: Toda solución recursiva puede encontrar una
solución iterativa equivalente, mientras que lo contrario no siempre es
cierto. Por cuestiones de uso de memoria y rapidez se recomienda
recursividad en lugar de interacciones.
La diferencia que podemos encontrar en la función recursiva y la
iterativa es que la recursiva tienes que hacer constantes llamadas en
las funciones que tienes en tu algoritmo o programa, mientras que en
la iterativa no son necesarias tantas llamadas para la solución del
problema.
Para saber mas del tema ver el siguiente video:
https://www.youtube.com/watch?
v=yNWuEDd8iQs

Más contenido relacionado

La actualidad más candente (20)

Guia 2nd o & 3er
Guia 2nd o & 3erGuia 2nd o & 3er
Guia 2nd o & 3er
 
Palindromos
PalindromosPalindromos
Palindromos
 
Programación 1: funciones en C
Programación 1: funciones en CProgramación 1: funciones en C
Programación 1: funciones en C
 
6.funciones y recursividad en c++
6.funciones y recursividad en c++6.funciones y recursividad en c++
6.funciones y recursividad en c++
 
10 programas de if
10 programas de if10 programas de if
10 programas de if
 
RECURSIVIDAD C++
RECURSIVIDAD C++RECURSIVIDAD C++
RECURSIVIDAD C++
 
Sentencia Condicional
Sentencia CondicionalSentencia Condicional
Sentencia Condicional
 
Pruebas de escritorio
Pruebas de escritorioPruebas de escritorio
Pruebas de escritorio
 
Ejercicios Utilizando C++
Ejercicios Utilizando C++Ejercicios Utilizando C++
Ejercicios Utilizando C++
 
Ejercicio 2 mates
Ejercicio 2 matesEjercicio 2 mates
Ejercicio 2 mates
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++
 
Metodosbiseccionyfalsaposicion
MetodosbiseccionyfalsaposicionMetodosbiseccionyfalsaposicion
Metodosbiseccionyfalsaposicion
 
10 programa s de if then else
10 programa s de if then else10 programa s de if then else
10 programa s de if then else
 
Clase 19
Clase 19Clase 19
Clase 19
 
Recursividad Con C#
Recursividad Con C#Recursividad Con C#
Recursividad Con C#
 
Funcion scanf
Funcion scanfFuncion scanf
Funcion scanf
 
Funciones trascendentales derivadas e integrales
Funciones trascendentales derivadas e integralesFunciones trascendentales derivadas e integrales
Funciones trascendentales derivadas e integrales
 
Programación 1: cadenas en C
Programación 1: cadenas en CProgramación 1: cadenas en C
Programación 1: cadenas en C
 
Ejemplo C++
Ejemplo C++Ejemplo C++
Ejemplo C++
 
Ejercicios de programacion en c++
Ejercicios de programacion en c++Ejercicios de programacion en c++
Ejercicios de programacion en c++
 

Similar a Factorial en C++

Similar a Factorial en C++ (20)

Capítulo 6 funciones y procedimiento
Capítulo 6 funciones y procedimientoCapítulo 6 funciones y procedimiento
Capítulo 6 funciones y procedimiento
 
Funciones recursivas
Funciones recursivasFunciones recursivas
Funciones recursivas
 
Funciones
FuncionesFunciones
Funciones
 
Informe Técnico - Recursividad Unidad 2 (Rubi Veronica)
Informe Técnico - Recursividad Unidad 2 (Rubi Veronica)Informe Técnico - Recursividad Unidad 2 (Rubi Veronica)
Informe Técnico - Recursividad Unidad 2 (Rubi Veronica)
 
Pract5
Pract5Pract5
Pract5
 
Guiaunidad iii
Guiaunidad iiiGuiaunidad iii
Guiaunidad iii
 
Modulo4
Modulo4Modulo4
Modulo4
 
Estructura repetitiva for y while
Estructura repetitiva for y whileEstructura repetitiva for y while
Estructura repetitiva for y while
 
11 Funciones
11 Funciones11 Funciones
11 Funciones
 
Sentencia de control
Sentencia de controlSentencia de control
Sentencia de control
 
Arreglo unidimensionales y bidimensionales
Arreglo unidimensionales y bidimensionalesArreglo unidimensionales y bidimensionales
Arreglo unidimensionales y bidimensionales
 
Sentencias de Repeticion
Sentencias de RepeticionSentencias de Repeticion
Sentencias de Repeticion
 
11funciones 1231096290787715-2
11funciones 1231096290787715-211funciones 1231096290787715-2
11funciones 1231096290787715-2
 
Clase 10
Clase 10Clase 10
Clase 10
 
recursividad.pptx
recursividad.pptxrecursividad.pptx
recursividad.pptx
 
recursividad EN PROGRAMACION ORIENTADA .pptx
recursividad EN PROGRAMACION ORIENTADA .pptxrecursividad EN PROGRAMACION ORIENTADA .pptx
recursividad EN PROGRAMACION ORIENTADA .pptx
 
FUNCIONES LENGUAJE C
FUNCIONES LENGUAJE CFUNCIONES LENGUAJE C
FUNCIONES LENGUAJE C
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
Programación de nivel básico 3. c2. p2.
Programación de nivel básico 3. c2. p2.Programación de nivel básico 3. c2. p2.
Programación de nivel básico 3. c2. p2.
 
Javacript: expresiones e instrucciones
Javacript: expresiones e instruccionesJavacript: expresiones e instrucciones
Javacript: expresiones e instrucciones
 

Más de KareliaRivas

Lenguaje de programación Python
Lenguaje de programación PythonLenguaje de programación Python
Lenguaje de programación PythonKareliaRivas
 
Diseño e instalación de sitios web (PHP hypertext preprocessor)
Diseño e instalación de sitios web (PHP hypertext preprocessor)Diseño e instalación de sitios web (PHP hypertext preprocessor)
Diseño e instalación de sitios web (PHP hypertext preprocessor)KareliaRivas
 
Estrategia de aprendizaje 17 (Herencia)
Estrategia de aprendizaje 17 (Herencia)Estrategia de aprendizaje 17 (Herencia)
Estrategia de aprendizaje 17 (Herencia)KareliaRivas
 
Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)KareliaRivas
 
Estrategia de aprendizaje 16 (Introducción a html)
Estrategia de aprendizaje 16 (Introducción a html)Estrategia de aprendizaje 16 (Introducción a html)
Estrategia de aprendizaje 16 (Introducción a html)KareliaRivas
 
Introducción a HTML
Introducción a HTMLIntroducción a HTML
Introducción a HTMLKareliaRivas
 
Programación orientada a objetos (Crear objetos)
Programación orientada a objetos (Crear objetos)Programación orientada a objetos (Crear objetos)
Programación orientada a objetos (Crear objetos)KareliaRivas
 
Programación orientada a objetos (Creación de clases)
Programación orientada a objetos (Creación de clases)Programación orientada a objetos (Creación de clases)
Programación orientada a objetos (Creación de clases)KareliaRivas
 
Los tipos de lenguaje de programación
Los tipos de lenguaje de programaciónLos tipos de lenguaje de programación
Los tipos de lenguaje de programaciónKareliaRivas
 
Diseño e instalación de sitios web (Apache HTTP server)
Diseño e instalación de sitios web (Apache HTTP server)Diseño e instalación de sitios web (Apache HTTP server)
Diseño e instalación de sitios web (Apache HTTP server)KareliaRivas
 
Introducción a la programación orientada a objetos en c (POO)
Introducción a la programación orientada a objetos en c (POO)Introducción a la programación orientada a objetos en c (POO)
Introducción a la programación orientada a objetos en c (POO)KareliaRivas
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programaciónKareliaRivas
 
Diseño e instalación de sitios web (Definición de un servidor web)
Diseño e instalación de sitios web (Definición de un servidor web)Diseño e instalación de sitios web (Definición de un servidor web)
Diseño e instalación de sitios web (Definición de un servidor web)KareliaRivas
 
Interfaces para sistemas de gestión de bases de datos
Interfaces para sistemas de gestión de bases de datosInterfaces para sistemas de gestión de bases de datos
Interfaces para sistemas de gestión de bases de datosKareliaRivas
 
Recursividad en programación
Recursividad en programaciónRecursividad en programación
Recursividad en programaciónKareliaRivas
 
Diseño e instalación de sitios web (El reto del espacio en pantalla / plantil...
Diseño e instalación de sitios web (El reto del espacio en pantalla / plantil...Diseño e instalación de sitios web (El reto del espacio en pantalla / plantil...
Diseño e instalación de sitios web (El reto del espacio en pantalla / plantil...KareliaRivas
 
Tipos de bases de datos distribuidas
Tipos de bases de datos distribuidasTipos de bases de datos distribuidas
Tipos de bases de datos distribuidasKareliaRivas
 

Más de KareliaRivas (20)

Lenguaje de programación Python
Lenguaje de programación PythonLenguaje de programación Python
Lenguaje de programación Python
 
Diseño e instalación de sitios web (PHP hypertext preprocessor)
Diseño e instalación de sitios web (PHP hypertext preprocessor)Diseño e instalación de sitios web (PHP hypertext preprocessor)
Diseño e instalación de sitios web (PHP hypertext preprocessor)
 
Estrategia de aprendizaje 17 (Herencia)
Estrategia de aprendizaje 17 (Herencia)Estrategia de aprendizaje 17 (Herencia)
Estrategia de aprendizaje 17 (Herencia)
 
Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)
 
Estrategia de aprendizaje 16 (Introducción a html)
Estrategia de aprendizaje 16 (Introducción a html)Estrategia de aprendizaje 16 (Introducción a html)
Estrategia de aprendizaje 16 (Introducción a html)
 
C#
C#C#
C#
 
Introducción a HTML
Introducción a HTMLIntroducción a HTML
Introducción a HTML
 
Programación orientada a objetos (Crear objetos)
Programación orientada a objetos (Crear objetos)Programación orientada a objetos (Crear objetos)
Programación orientada a objetos (Crear objetos)
 
Java
JavaJava
Java
 
Html
HtmlHtml
Html
 
Programación orientada a objetos (Creación de clases)
Programación orientada a objetos (Creación de clases)Programación orientada a objetos (Creación de clases)
Programación orientada a objetos (Creación de clases)
 
Los tipos de lenguaje de programación
Los tipos de lenguaje de programaciónLos tipos de lenguaje de programación
Los tipos de lenguaje de programación
 
Diseño e instalación de sitios web (Apache HTTP server)
Diseño e instalación de sitios web (Apache HTTP server)Diseño e instalación de sitios web (Apache HTTP server)
Diseño e instalación de sitios web (Apache HTTP server)
 
Introducción a la programación orientada a objetos en c (POO)
Introducción a la programación orientada a objetos en c (POO)Introducción a la programación orientada a objetos en c (POO)
Introducción a la programación orientada a objetos en c (POO)
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
Diseño e instalación de sitios web (Definición de un servidor web)
Diseño e instalación de sitios web (Definición de un servidor web)Diseño e instalación de sitios web (Definición de un servidor web)
Diseño e instalación de sitios web (Definición de un servidor web)
 
Interfaces para sistemas de gestión de bases de datos
Interfaces para sistemas de gestión de bases de datosInterfaces para sistemas de gestión de bases de datos
Interfaces para sistemas de gestión de bases de datos
 
Recursividad en programación
Recursividad en programaciónRecursividad en programación
Recursividad en programación
 
Diseño e instalación de sitios web (El reto del espacio en pantalla / plantil...
Diseño e instalación de sitios web (El reto del espacio en pantalla / plantil...Diseño e instalación de sitios web (El reto del espacio en pantalla / plantil...
Diseño e instalación de sitios web (El reto del espacio en pantalla / plantil...
 
Tipos de bases de datos distribuidas
Tipos de bases de datos distribuidasTipos de bases de datos distribuidas
Tipos de bases de datos distribuidas
 

Último

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 

Último (20)

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 

Factorial en C++

  • 2. PÁGINA 02 En este tutorial aprenderemos a hacer una función de factorial en c++ mediante la estructura de control for y también aplicando recursividad. Además veremos cuáles son las ventajas de usar recursividad sobre algunas estructuras de control iterativas. Primero veamos en qué consiste la función factorial. El factorial de un número es la multiplicación de los números que están comprendidos entre 1 hasta dicho número. Para expresar el factorial se suele utilizar la notación n!. Así la definición es la siguiente: n! = 1 x 2 x 3 x 4 x 5 x ... x (n-1) x n Estructura de control for Un bucle for hace que una instrucción o bloque de instrucciones se repita un número determinado de veces mientras se cumpla la condición. for(inicializacion; condicion; incremento/decremento) { instrucción 1; ........... instrucción N; }
  • 3. zona de inicialización zona de condición zona de incremento ó decremento. Se inicializa la variable o variables de control. Se evalúa la condición. Si la condición es cierta se ejecutan las instrucciones. Si es falsa, finaliza la ejecución del bucle y continúa el programa en la siguiente instrucción después del for Se actualiza la variable o variables de control (incremento/decremento) Se pasa al punto 2. A continuación de la palabra for y entre paréntesis deben haber siempre tres zonas separadas por punto y coma: En alguna ocasión puede no ser necesario escribir alguna de ellas. En ese caso se dejarían en blanco, pero los punto y coma deberían aparecer. El funcionamiento de un bucle for es el siguiente: 1. 2. 3. 4. 5. Ahora veremos el ejemplo del factorial implementado en c++: PÁGINA 03
  • 4. PÁGINA 04 #include using namespace std; int main(void){ int i; int fact=1; int numero; cout<<"ingresa un numero: "; cin>>numero; if(numero<0) fact =0; else if(numero==0) fact=1; else{ for (i = 1; i <= numero; i++){ fac = fact*i; } } cout<<"Factorial de "< system("pause"); } Como podemos observar en el ejemplo, primero inicializamos nuestras variables i, fact y numero. Después de ingresar el número por consola procedemos a evaluarlo. Si este es menor a cero, entonces el factorial también será 0, si es cero nuestro factorial será 1, caso contrario procedemos a calcular el factorial con el for.
  • 5. PÁGINA 05 En nuestro for inicializamos nuestra variable iterativa i en 1, esta se incrementará en 1 por cada iteración hasta que sea igual a número, dentro de las instrucciones por cada iteración se efectúa una multiplicación de todos los valores que va tomando i, en nuestro caso de 1 hasta el número y los va almacenando en la variable fact. Una vez terminado el programa, mostramos en pantalla nuestro resultado. Recursividad En palabras simples, la recursividad es cuando una función tiene la característica de poder llamarse a sí misma dentro de sus instrucciones; gracias a esto, podemos utilizar a nuestro favor la recursividad en lugar de la iteración para resolver determinados tipos de problemas. A continuación veremos el ejemplo de la función factorial usando recursividad: #include using namespace std; int factorial(int n) { if(n < 0) return 0; else if(n > 1) return n*factorial(n-1); return 1; } int main(void) { int numero; cout<<"ingresa un numero: "; cin>>numero; cout<<"Factorial de "<; }
  • 6. PÁGINA 06 Como podemos observar en nuestro ejemplo nuestra función factorial recibe un valor n, evaluamos dicha variable, si esta es menor que cero la función nos retorna el valor 0, si n es mayor que uno llamamos otra vez a nuestra función factorial pero con n-1 y a esto lo multiplicamos por n, esto se repetirá hasta que n llegue a tomar el valor de 1. La mejor forma de entenderlo podría ser: 5! n=5 -> factorial(5) -> 5*factorial(4) -> 5*4*factorial(3) -> 5*4*3*factorial(2) ->5*4*3*2*factorial(1) -> 5*4*3*2*1 -> 120 Principio importante: Toda solución recursiva puede encontrar una solución iterativa equivalente, mientras que lo contrario no siempre es cierto. Por cuestiones de uso de memoria y rapidez se recomienda recursividad en lugar de interacciones. La diferencia que podemos encontrar en la función recursiva y la iterativa es que la recursiva tienes que hacer constantes llamadas en las funciones que tienes en tu algoritmo o programa, mientras que en la iterativa no son necesarias tantas llamadas para la solución del problema. Para saber mas del tema ver el siguiente video: https://www.youtube.com/watch? v=yNWuEDd8iQs