Introducción a los algoritmos

1

¿Qué aprenderás sobre algoritmos y pensamiento lógico?

2

La importancia de entrenar tu pensamiento lógico

3

¿Qué entiende una computadora?

4

¿Qué es el sistema binario?

5

Metodología para construir un algoritmo: requerimientos y proceso mental

Tipos de datos y operadores lógicos

6

¿Qué son variables y constantes?

7

¿Qué son Bits y Bytes?

8

Identifica las variables según los requerimientos de negocio

9

Strings (texto) y concatenación

10

Números y operaciones matemáticas básicas

11

Operaciones matemáticas compuestas: paréntesis y orden de evaluación

12

True y false: booleanos y tablas de la verdad

13

Arrays y funciones sobre arrays

14

¿Cómo diseñar algoritmos con diagramas de flujo?

15

Define el tipo de dato según los requerimientos de negocio

Estructuras de control

16

If y Else: condicionales y comparaciones para proteger tus algoritmos

17

Switch y Case: condicionales en forma de casos

18

Excepciones y errores: Throw y Try Catch

19

¿Qué es un ciclo? While, For y Do While

20

Diagrama de flujo con condicionales

21

Diagrama de flujo con ciclos

22

Tutorial de algoritmos de programación

23

Diseña algoritmos para resolver problemas de tu vida diaria

Encapsula tu código en funciones

24

¿Cómo desarrollar tu lógica de programación?

25

¿Qué es una función?

26

Modularización de código

27

Flujo de funciones para encapsular algoritmos

28

Nomenclaturas de programación: camelCase, PascalCase, snake_case

29

¿Qué es recursividad? Funciones que se llaman a sí mismas

30

Convierte algoritmos con ciclos a funciones recursivas

31

Resolviendo acertijos

Traduce tus algoritmos a lenguajes de programación

32

Diferencias entre lenguajes de programación

33

Cómo escribir código en cualquier lenguaje de programación

34

Cómo programar en JavaScript, Python y PHP

35

Introducción al ejercicio en JavaScript

36

Programando en JavaScript

37

Introducción al ejercicio en Python

38

Programando en Python

39

Introducción al ejercicio en PHP

40

Programando en PHP

41

Cómo programar en Java y Lenguaje C

42

Introducción al ejercicio en Java

43

Programando en Java

44

Introducción al ejercicio en C

45

Programando en Lenguaje C

46

Traduce diagramas de flujo a código en lenguajes de programación

Conclusiones

47

Próximos pasos para aprender programación profesionalmente

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

¿Qué es recursividad? Funciones que se llaman a sí mismas

29/47
Recursos

¿Qué es la recursividad?

Son funciones que se llaman a sí mismas en el momento que se están ejecutando. Es muy importante tener en cuenta que las debemos controlar para que no caigan en un loop infinito y no rompan el flujo normal de nuestra aplicación.

La mejor forma de trabajar con la recursividad:

Lo mejor es condicionarlas, para que solo se llamen a sí misma bajo una condición que tenga un fin y que luego de ese fin el flujo de la aplicación pueda continuar normalmente.

Aportes 137

Preguntas 18

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Bufff siento que no se explicó bien este tema y es uno de los temas más complejos de la programación… trataré de explicarlo mejor, afortunadamente para explicar recursividad existe un robotito llamado “Karel” (la flechita azul del lado derecho) que puedes usar para programar su comportamiento en un mundo.
.
Para ponerlos en contexto, puedes decirle que camine y que se apague y eso lo podemos hacer mediante código, en este caso, para declarar una función en Karel lo hacemos con la palabra define-nueva-instruccion, para este caso le puse de nombre: caminar, la función hará que el robotito camine solamente si frente-libre, es decir, va a caminar hasta que se tope con un muro, como podemos ver, en el mundo hay un muro que detendrá a Karel:
.

.
Entonces, puedes ver cómo dentro de la función caminar justamente dentro de la condición si se manda a llamar de nuevo a la función caminar, es decir, se está mandando a llamar así misma, y por cada llamada se ejecuta el código, puedes ver qué parte del código se va ejecutando en este gif.
.
Coo logras apreciar, eso es recursividad, cuando una función se manda a llamar a si misma, y la recursividad acaba cuando la condición deja de cumplirse, en este caso puedes ver que cuando la condición es falsa está la instrucción apagate que es básicamente el fin del programa 😄

Aquí les dejo una relación con la recursividad, vemos como una imagen se llama a sí mismo dentro de la imagen. Lo mismo aplicaría en las funciones cuando la misma función se llama así misma

¡Para entender lo que es la recursividad, primero hay que entender lo que es la recursividad…!

🐱‍💻 Implementando el algoritmo en el lenguaje de programación Dart. Quieres probarlo, solo abre: https://dartpad.dev/ y realiza una copia del código.

void main(){
  cuentaRegresiva(10);
}

void cuentaRegresiva(int numero){
  numero -= 1;
  
  if(numero > 0){
    print(numero);
    cuentaRegresiva(numero);
  }else{
    print('Feliz Año');
  }
}

¿Qué es recursividad?
Funciones que se llaman a sí mismas en el momento que se están ejecutando, es muy importante que tengas en cuenta que las debemos controlar para que no caiga en un loop infinito y no rompan el flujo normal de nuestra aplicación, debemos tener mucha precaución.
Lo mejor es condicionarlas y usarlas sabiamente, para que solo se llamen a sí misma bajo una condición que tenga un fin y que luego de ese fin el flujo de la aplicación pueda continuar normalmente.
Saludos. ❤️

En JavaScript:

Console:

Hola les comparto la imagen de mi código y mi código
ÉXITO

def cuentaRegresiva(numero):
    numero = numero - 1 

    if(numero > 0):
        print(numero)
        cuentaRegresiva(numero)
    else:
        print("Feliz año nuevo")

cuentaRegresiva(10)
9
8
7
6
5
4
3
2
1
Feliz año nuevo

Siento que la profesora no explica para dummies, ella explicá para gente con un nivel intermedio o avanzado, deberia ser mas grafico y con ejemplos para seguir como en el curso de python

Soy totalmente nuevo en esto de la programacion y desarrollo web, los cursos anteriores a este los entendi super facil y rapido, pero la verdad que desde que empece este curso con la profe Ana no he entendido absolutamente nada, siento que hace falta mas ejemplos graficos paso a paso, que enseñe como usa en su codigo lo que enseña, y que explique mas detallado, siento que esta profe habla como si todos los que estan viendo el curso tuviesen conocimientos previos, y para los que no sabemos nada en absoluto ademas de lo que nos enseña platzi es dificil entender. Inlcuso en los cursos anteriores con el otro profe me pasaba todo el dia emocionado estudiando y viendo las clases cada dia, pero este curso con esta profe me ha parecido tan enredado e incompleto que si acaso veo 2 videos a la semana y termino desanimado por no entender.

La matrushka.
Es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más pequeña dentro de sí. Ésta muñeca, también contiene otra muñeca dentro. Y así, una dentro de otra.

Es un ejemplo mas visual de como funciona la recursividad. Cuando estudiaba la ingeniería así fue como lo aprendí y me ayudo bastante.

bueno platzinautas , en vista de que todos estamos en busca del saber infinito de la programación vengo a recomendarles esta página que encontre se llama codingame y consiste en resolver distintos puzzle con código 👉https://www.codingame.com/start , está bien chévere 🤔😀

Uno de los ejemplos mas comunes y útiles de la recursividad es el factorial donde por ejemplo decimos cual es el factorial de 5, su resultado es 5x4x3x2x1 y asi se podría con cualquier numero ingresado.

En PHP

function CuentaRegresiva($tope){
    $tope -=1;

    if($tope>0){
        echo '<br></br>';
        echo 'Contando..'.$tope;
        CuentaRegresiva($tope);
        
    }else{
        echo '<br></br>';
        echo 'Feliz Año..!';
    }
}

CuentaRegresiva(10);```

Salida :



Contando…9

Contando…8

Contando…7

Contando…6

Contando…5

Contando…4

Contando…3

Contando…2

Contando…1

Feliz Año…!```

En programación,recursividad, son las funciones, que en medio de su ejecución se llaman a si misma nuevamente.

Interesting, here my code. I’m noob jeje

var cuentaRegresiva = function(numero){
     if (numero > 0){
         console.log(numero);
         cuentaRegresiva(numero - 1);
     } else {
         console.log("Fin de la cuenta");
     }
 }

Valla pienso que fue muy buena la clase y los aportes de nuestros compañeros opino que en cada cosa debemos sacar lo mejor de los 2 y que entre mas contexto optengamos mejor aprenderemos.

Hola comunidad soy nuevo programando y tenía 2 dudas 😄😭
¿Cómo hago correr el código en Visual Studio Code? ¿En que lenguaje debería hacer los ejemplos?
Solo se escribir Hola mundo en html y navegar por mi terminal. Les agradezco de antemano besha comunidad.💚

def cuenta_regresiva(numero):
    numero -= 1
    if numero > 0:
        print(numero)
        cuenta_regresiva(numero)
    else:
        print('Feliz año nuevo')

cuenta_regresiva(10)

Inception

En Python lo hice de esta manera, para ir practicando la recursividad:

def cuenta_regresiva(numero):
    numero -= 1
    
    if(numero > 0):
        print(str(numero) + '...')
        cuenta_regresiva(numero)
    else:
        print(""" 
        Estas son las mañanitas 🌄
        Que cantaba el rey David 👑
        Hoy por ser día de tu santo 🎂
        Te las cantamos aquí 🎤
        Despierta, mi bien, despierta ⏰
        Mira que ya amaneció 🌄
        Ya los pajaritos cantan 🐦
        La luna ya se metió 🌇
        Qué linda está la mañana 🌄
        En que vengo a saludarte 🤗
        """)
    
cuenta_regresiva(10)```

Y se ejecuta así:


9…
8…
7…
6…
5…
4…
3…
2…
1…

    Estas son las mañanitas 🌄
    Que cantaba el rey David 👑
    Hoy por ser día de tu santo 🎂
    Te las cantamos aquí 🎤
    Despierta, mi bien, despierta ⏰
    Mira que ya amaneció 🌄
    Ya los pajaritos cantan 🐦
    La luna ya se metió 🌇
    Qué linda está la mañana 🌄
    En que vengo a saludarte 🤗```

Así se vería la función en el navegador

Hola! Espero que sirva de algo mi aporte…
La recursividad veanlo que parte de un ciclo infinito (al menos en primera instancia) osea que nunca se va a detener, pero lo que plantea la recursividad es partir de un caso base, como en matematicas, una excepcion a la regla, para hacer un if…else o mejor dicho para detener el supuesto bucle infinito, algo que puede ayudarles a entender, es el factorial de un número y va asi:

function factorialRecursivo (n) { 
	if (n == 0){ 
		return 1; 
	}
	return n * factorialRecursivo (n-1); 
}

Para explicar este ejemplo, la funcion llamada factorialRecursivo, nos plantea el caso base (la excepcion a la regla) que seria cuando n valga 0, simplemente termina la funcion y devuelveme el valor de 1, pero si no consideramos ese caso base, se crearia un loop infinito porque en el else se esta llamando asi misma, donde le dice multiplica el valor de n por n-1, no le estariamos colocando un stop, es por eso fundamental que te plantees tu caso base o tus casos bases antes de efectuar la recursividad para que la misma funcion sepa cuando detenerse

Siento que esto de la Recursividad no fue bien explicado, se necesitan mas ejemplos sobre este tema, profundizar mas. La verdad yo tengo una pequeña base de programación porque estudie en la Universidad y todo lo relacionado a recursividad recién lo llevábamos en segundo semestre.

En python

def cuentaRegresiva(numero):
    numero -= 1
    
    if(numero > 0):
        print(numero)
        cuentaRegresiva(numero)
    else:
        print("Feliz año nuevo")
    
cuentaRegresiva(10)

La salida sería:

9
8
7
6
5
4
3
2
1
Feliz año nuevo

Buenos días. Alguien de la comunidad podría por favor explicarme por debajo de la función cuentaRegresiva(numero) aparece numero - = 1

No entiendo el signo de menos antes de igual.

Gracias

Para utilizar esta técnica (un poco riesgosa) se tiene que tener a consideración la situación y luego poner adecuadamente la condición, CON UN FIN, para que luego el flujo de la condición ueda seguir normalmente

RECURSIVIDAD: Funciones que se llaman así mismas.

EJEMPLO JAVASCRIPT:

numero = 10
function cuentaRegresiva(numero){
    numero -=1
    
    if(numero > 0){
        console.log(numero)
        cuentaRegresiva(numero)
    }else{ 
	console.log("cuenta regresiva terminada")
	}
}

cuentaRegresiva(numero)

Mi ejemplo de recursividad en Python.
Es una cuenta atrás para el despegue de un cohete.

"""
Prints out a spaceship launch sequence.
"""

def main():
    x = 11
    while x > 1:
        x = x - 1
        print(x)
    else:
        print("Liftoff!")



if __name__ == '__main__':
    main()

Un buen ejemplo sobre la recursividad podría ser por ejemplo un programa para dividir

 function divisionEntera(dividendo, divisor){
            if(dividendo < divisor){
                return 0
            }

            return 1 + divisionEntera(dividendo - divisor, divisor)

La función divisionEntera se estará llamando hasta que se termine la divición
Otro ejemplo sería:

function factorial(n) {
        if (n === 1) {
          return 1;
        }
        this.cache[n] = n * factorial(n - 1);

Este ejemplo es algo parecido, pero ahora la función se llamará una y otra vez hasta que termine de calcular las multiplicaciones necesarias para saber la factorial.
.
Estos ejemplos son del curso de Fundamentos de JavaScript

¿Qué es recursividad? Funciones que se llaman a sí mismas.

Como por ejemplo tenemos este código:

Es una función que recibe como parámetro un número, el cual le va a restar 1 hasta llegar a 0. Cuando llegue a 0 va a devolver “feliz año nuevo”.

Pero, mientras el parámetro sea mayor a 0, la función se va a volver a ejecutar a sí misma así le resta uno y así.

Las funciones recursivas pueden generar un loop. Por eso, es importante que se ejecuten dentro de una condición. Tener cuidado.

Mi función recursiva:

var hpProtagonista
var hpRestante
dano_suelo_danino(hpRestante):
	hpRestante -= hpProtagonista/10

	if hpRestante > 0:
		muestra -hpProtagonista/10
		dano_suelo_danino(hpRestante)
	else:
		muestra "Game Over"

Este muestra una función para ir quitandole HP a nuestro personaje jugable al estar encima de un suelo dañino x. Está función recursiva va a ir quitandole un 10% de vida al personaje cada vez que se repita hasta que el valor de hpRestante sea igual o menor a 0.
Todavía no sería posible de implementar en un juego por los defectos que tiene:

  1. Hay que hacer que tenga un intervalo de tiempo entre cada iteración, sino solo va a cepillarse el HP en un tris.
  2. 10% por iteración es muy alto, preferiría un número menor. También sería interesante implementar varios tipos de suelo y que cada uno quite una cantidad de HP distinta.
  3. Falta una animación o algo similar que muestre que se ha hecho una cantidad de daño. No contemos muestra -hpProtagonista/10, pues me refiero a un efecto especial como un sonido o un parpadeo.
  4. Si fuese un juego profesional, tendríamos que mostrar una pantalla de Game Over adecuada.
    En general, el mayor problema es el primero, pues el resta son más problemas derivados de el carácter de ensayo de la función.

Aquí hay un ejemplo en C del Curso de Programación estructurada

Ejemplo de una función recursiva: RegressiveCount(number=3): number -= 1 escribir "Tienes 3 segundos para venir a la mesa" if number > 0: Mostrar number RegresiveCount(number) else: Mostrar:"CAGASTE"

$tiempo = time();
$fin = 0;
$cuenta_fin = 11;

while( ($fin - $tiempo) < $cuenta_fin ){
    sleep(1);

    $fin = time();
    $cuenta = $cuenta_fin - ($fin - $tiempo); 

    echo $cuenta.'<br>';

    if (ob_get_contents())
    {
        ob_end_flush();
       
    }

    flush();
    if($cuenta == '0'){  print 'Feliz Año'; }
}

24. ¿Qué es recursividad? Funciones que se llaman a sí mismas

Si les soy sincero, la recursidad es un recurso muy interesante al estudiar algoritmos, sin embargo, cuando se enfrenten a un entorno ya laboral difícilmente encontrarán casos reales de uso, y terminarán usando lo más práctico, legible y eficiente. (La recursividad no cumple ninguna de las 3).

Sin embargo es válido para aprender y para algunas pruebas técnicas (para demostrar que lo conoces).

Aca les dejo un codigo chiquito sobre la explicacion del ejemplo
Pd: no se programar todavia, no domino js pero me tuve que apoyar de algunos aportes de aqui. pero lo hice para entender como funciona. leanlo y intenten intenderlo y luego hacerlo 😄
https://codepen.io/Jcorrales07/pen/VwbmyyR?editors=0010

Busquen recursion en google y google les preguntara si quisieron decir recursion, Recursivamente

Lo que me cuesta manejar un poco de las funciones, es cuando queremos mandarle un parámetro y luego que devolvamos otro parámetro… pero con la práctica iré mejorando

Les dejo mis apuntes, espero les sirva 😃


Como dato curioso: si buscan “recursividad” en el buscador de Google les aparecerá “Quizás quisiste decir: recursividad” como si estuviera mal escrito, pero si le dan para corregirlo este volverá a mostrar lo mismo una y otra vez. Es decir, es un ejemplo de recursividad que han puesto de forma curiosa y divertida en Google.

Muy escasa la explicación…esto en vez de ayudar aumenta la barrera…haganse un favor y vean este video:
https://www.youtube.com/watch?v=ESwjPuHNAoo

y si no han pagado la suscripcion, mejor…hagan todo ese curso de forma gratuita!

que profesora tan mala para explicar los temas.

😎 Realice un algoritmo en JS en donde se implementa de una manera poco convencional la recursividad. La funcion no se llama a si misma propiamente, pero si llama a otra funcion que la vuelve a llamar.

Es un bucle infinito hasta que no indiquemos que nos aceptamos como somos. Un ejemplo de como seria en codigo el Jutsu de los Uchiha, Izanami.

en general no entendí ni madres jjjj

Funciones recursivas --> Se llaman así mismas en el momento de su ejecución. Estas se deben controlar y se debe tener cuidado que no vayan a quedar en un loop de ejecución que pueda afectar en un flujo de ejecución normal.
Se deben condicionar para su correcto funcionamiento.

Rayos, que corta explicación para un tema que hasta para programadores junior se les queda pegado.
.
Básicamente la recursividad es cuando una función se llama a si misma, creando un loop de funciones, así como poner dos espejos de frente.
.
Lo destacable de esto, es que cada loop genera un espacio en memoria, o lo que me gusta llamar a mi una incógnita la cual debe ser respondida para poder detener el loop. Está incógnita no tiene de otra forma que crear otra incógnita para poder llegar a una solución, y así sucesivamente hasta que algunas de las siguientes incognitas dentro de más incognitas llegue a una solución.
.
Se que suena duro, pero vamos a considerar los numeros factoriales, estos numeros son la multiplicación de si mismos con el factorial del numero anterior, o sea 5! = 5 * 4!, 4!= 4 * 3!, 3!= 3 * 2!, 2! = 2 * 1!, y 1!= 1, como podemos ver, los factoriales crean incognitas dentro de si mismos hasta llegar al minimo de 1. aquí una forma más grafica de esa operación:
.

.
También se puede graficar la forma en como se crean incognitas dentro de otras hasta llegar a la solución minima.
.

.
La recursividad nos sirve mucho para algunos temas en concreto, ya que la mayoría de cosas, por no decir el 99% de lo que hacemos con funciones en recursividad, lo podemos hacer con un while o un for. Así que no intenten tomar la recursividad como la primera solución para resolver un problema de ciclos, ya que además de ser muy compleja, ocupa mucho más espacio en memoria.
.
Teoricamente, solo nos sirve para problemas que requieran que se generen incognitas dentro de otras, sin descartar las primeras, creo que la mayoría de funciones que tiene esto, son para temas de estructura de datos.

Si hay alguien que no entendio acerca de que es la recursividad puede que este video les pueda funcionar

https://youtu.be/yX5kR63Dpdw

y por aqui tambien les dejo una imagen que justo cuando vi este tema me ayudo a entender lo explicado en la clase saludos!

Para complementar lo explicado por la profe recomiendo los siguientes videos:

  1. https://www.youtube.com/watch?v=yX5kR63Dpdw
  2. https://www.youtube.com/watch?v=YwRjEOFxvO0

Intenté pasarlo a código y sale así.

function cuentaRegresiva(numero){
    numero -= 1;

    if (numero > 0){
        document.write(numero);
        cuentaRegresiva(numero);
    }
    else {
        document.write("Feliz cumpleaños");
    }
};
cuentaRegresiva(100);

Lo pueden probar, solo que aún no sé como hacer que en cada cuenta se espere 1 segundo para que se vea bien.

cuentaHastaDiez(numero):
	numero += 1
	
	if numero < 10:
		muestra numero
		cuentaHastaDiez (numero)
	else: 
		muestra "Fin"

Hice un cronometro hasta diez jaja

Cómo todo lo que puede ser peligroso, llamar a las funciones repetidamente, puede crear un ciclo interminable de funciones llamándose a sí mismas.

Que buenos acertijos

Algo que también puedes buscar para entender un poco más esto, Son las torres de Hanoi.

Considero que esto es de lo má útil y polémico que puede tener la programación

Que cambio de imagen, wow, mas allá de eso en tema la recursividad es muy practica en la realidad

excelente clase se entiende que la funcion se vuelve a llamar dentro de la condicion,para ejecutar el else

para usar en mi proyecto de pomodoro

![](https://static.platzi.com/media/user_upload/carbon-a8d67626-b4ef-489f-90c5-4d52a56ce493.jpg)

Recuerdo que el ejemplo y ejercicio con el cual me explicaron la resursividad fue con factorial:
Ejemplo:

Factorial de 5:
5!

yo entendi con esto capaz les sirven https://www.youtube.com/watch?v=oXFKWiNhEx0

Hice el código en C, con unas cuentas adiciones para que sea agradable al ejecutar y un menú interactivo para que lo puedan checar y jugar.

#include<stdio.h>
#include<stdlib.h>
int cuentaRegresiva(int n);
int main(){
	int a,opcion;
	do{
		printf("Cuenta regresiva de un numero entero positivo pa\n");
		printf("Ingresa el numero entero positivo: ");	
		scanf("%i",&a);
		while(a<0){
			printf("Ingresa el numero entero positivo");
			scanf("%i",a);
		}
		cuentaRegresiva(a);	
		printf("¿Deseas volverlo a intentar?\n1.	Si\n2.	No:	");

		scanf("%i",&opcion);	
	}while(opcion!=2);
}

int cuentaRegresiva(int n){
	n-=1;
	if(n>0){
		printf("%i\n",n);
		cuentaRegresiva(n);
	}else{
		printf("Hemos concluido\n");
	}
		
}

Comparto una imagen de mi algoritmo en PSeInt, para los q no tienen experiencia en algún lenguaje de programación puede ser una buena plataforma para practicar.

NO ENTENDÍ

#Python
#Cuenta regresiva

import time

def cuentaRegresiva(numero):
    numero -= 1
    time.sleep(1)
    if numero > 0:
        print(numero)
        cuentaRegresiva(numero)
    else:
        print("Feliz año nuevo!")

cuentaRegresiva(10)

Buenos dìas les dejo un enlace que puede complementar la clase
https://www.youtube.com/watch?v=yX5kR63Dpdw&t=402s

Es importante en este curso para no confundir a las personas que no tienen conocimientos y lo estan adquiendo por primera vez, los ejemplos de los codigos sean en lenguaje natural.

cuentaRegresiva(numero) {
    numero = numero - 1

    si numero > 0 entonces
        imprimir "Numero: " . numero
        cuentaRegresiva(numero)
    sino
        imprimir "Feliz año nuevo"
    fin-si
}   

Ya que si dominas las estructuras de control en lenguaje natural, podras usarlas en cualquier lenguaje de programaciòn que es la herramienta para expresar el lenguaje natural en còdigo,

Slds.

Para que tipo de situaciones de la vida real se utilizarían las funciones recursivas?

compadres y compadres por acá les dejo otra explicación del parcero de Hola Mundo que es mero aspero

https://www.youtube.com/watch?v=AZd_CzcRhXs&ab_channel=HolaMundo

Ejemplo en python

#!/usr/bin/python3

def cuenta_regresiva(n):
    n -= 1 

    if n > 0:
        print(n)
        cuenta_regresiva(n)
    else:
        print("Feliz Feliz")


def main():
    n = int(input("Ingresa un numero: "))
    cuenta_regresiva(n)


if __name__ == "__main__":
    main()

https://www.youtube.com/watch?v=YwRjEOFxvO0

grande jideo cojima explicando recursividad

![]( dejo por aqui mi diagrama de flujo,

cuentaHastaDiez(numero);
	numero += 0

	if numero > 10;
		muestra " se conto hasta 10"
	else
		muestra "cuenta regresiva"

Mi aporte:

Recursividad es una propiedad que se aplica a las funciones. Es decir, es algo que pueden hacer las funciones, pero es importante saber que para que esta propiedad funcione adecuadamente se requiere definir su auto-llamamiento dentro de una condición para que no se ejecute en un ciclo infinito.

Es entonces una funcion que se llama así misma y se utiliza un número definido de veces hasta que cumple su condición y desaparece.

en pogramacion recursividad se refiere que al pogramar una dicha funcion esta sea capas de activarse sola o llamarse a si misma o sola sim embargo hay que tener en cuidado en que esta no caiga en una repeticion infinita. este es mi aporte si me equivoco corriganme

Acabo de llevar a código el ejemplo de la profesora en la consola y acabo de hacer un bucle infinito porque no puse el código para que el número fuera disminuyendo jajaja chic@s cuidado con la recursividad!

Excelente, tome un curso del profe David Aoresti y este es un tema complejo, no lo comprendo con su totalidad, sin embargo el ejemplo es claro y da una idea concreta de lo que es la recursividad, lo pase a python y se entiende bastante bien cuando lo haces.
![](

Ejercicio Recursividad
var numero = 10;

function cuentaRegresiva(numero) {
numero -=1;
if (numero > 0) {
console.log(numero);
cuentaRegresiva(numero) }

else (console.log(“feliz año nuevo”))}
cuentaRegresiva(numero)

Considero que la informacion que da la profe es basica, pero no mas es que veas los comentarios con mas ejemplos e interpretaciones y no hay necesidad de ver tanto video. buenisimos los aportes chicos gracias

Mi aporte mediante un ejemplo de FACTORIAL de un número usando RECURSIVIDAD.

Hola, para los que están como yo que no entendían nada es porque les falta las bases. Les recomiendo el curso de programación básica de Fredy o el curso de programación para principiantes de Fernando Herrera.

Dicho eso, les comparto lo que logré en JS.

<

let n;

function backwards (n) {

n = n-1

    if (n > 0 ) {

        console.log(n)
        backwards (n)
    
    } else {

        console.log (` It's new year! `)

    }
    
}

backwards (10)
> 

Mi resultado:

![](![](
Posdata: Voy 22 días aprendiendo a programar. 😃

Este es mi aporte xd de como hacer una cuenta regresiva con for e if xddxddx esta medio chafa pero funciona xd

var nume1 = 5;
var num2 = nume1;
for(x=0;x<nume1;x++){
    console.log(num2);
    num2 = num2 -1;
    if(num2 == 0){
        console.log('siuuuu');
    }
}

Cual sería la diferencia entre una función recursiva y un ciclo?

“Ahora Sí Vas a Entender la Recursividad”

https://www.youtube.com/watch?v=SRR4TLey2lA

Hola! escribí el programa de cuenta regresiva en Python, y funciona, pero al final de todo imprime un ‘none’ y no entiendo a qué corresponde, alguien que me lo pueda aclarar? gracias!

num=int(input('Ingresa un número: '))


def cuentaregresiva(num):
    num -= 1
    print(num) #se imprime el resultado cada vez que se ejecuta la funcion
    
    while num > 0:
        return(cuentaregresiva(num)) #esto la vuelve a llamar
        
   
    else:
        print('Feliz año nuevo')

print(cuentaregresiva(num)) 

Muy por arriba la explicación de este tema tan complejo. Además me parece que la linea

numero -= 1

quedaría mejor luego del bloque if else.

Comparto el algoritmo:

Creo que faltaron algunos puntos importantes

Antes, daré contexto:
1.- Vine a ver la leccion porque un SWE me comentó que me faltaba comprender mejor la recursividad
2.- Al ver el curso volví a entender lo mismo, así que supuse que algo faltaba y realicé una prueba para conocer el comportamiento de una función recursiva, es basntante ilustrativo y se los comparto porque es algo que igual acabo de aprender.

Prueba:

  • Objetivo: entender como funciona la recursividad
  • Descripción:
    Durante la prueba se imprimen mensajes en 3 puntos críticos, 1) antes de volver a llamar la función, 2) Al llegar a la condición de quiebre, y, 3) Después de llamar a la función.
    Junto con estos mensajes e imprime un contador para conocer el uso de memoria dentro de las funciones.
    El código es el siguiente:
  • Resultado: La salida en consola ha sido la siguiente

Análisis de resultados
Hay varios puntos importantes que podemos resaltar

  1. A diferencia de un while o for, la función no se termina de ejecutar completamente, ya que vuelve a entrar a sí misma
  2. Supongo que el uso de memoria crece cada vez más mientras más largo es el loop y esto pudiese ser riesgoso ante ciertas implementaciones
  3. Al salir de la función ejecutamos el código que se encontraba abjo de la llamada a la función
  4. Supongo tendrá alguna relación con el comportamiento de un Stack debido a su característica LIFO (Último en entrar, primero en salir)

Me gustaría conocer comentarios sobre que tipo de BigO implica esta operación pues no estoy muy seguro, y cualquier otro detalle con el que puedan complementarnos validando o denegando las observaciones.

Siguan aprendienro, gracias ❤️

Función recursiva para imprimir el factorial de un número

let factorial = (num) => {
    if(num > 1){
        return num * factorial(num - 1);
    }else{
        return 1;
    }
}

console.log(factorial(5));

Aqui, un aporte que puede ayudar a entender recursividad con las torres de hanoi

Recursividad es un concepto que aplicas cuando hay una tarea que debe ser repetitiva hasta cierto punto, debes condicionarla para que no se quede en un bucle infinito

Hola platzinautas, realice el algoritmo recursivo imaginando que estoy abriendo y después cerrando una matrushka. El algoritmo lo realicé en Raptor.
 
Cuando llamamos a una función y dentro de la misma la volvemos a llamar, es como entrar a una cueva dentro de una cueva. Las mismas veces que la has mandado a llamar son las veces que tendrás que salir de la función. Esto se visualiza mejor con el algoritmo que realice en Raptor.
 

Hice el ejemplo de la cuenta regresiva con recursividad en una console application en c#:

using System;

namespace recursividad
{
    class Program
    {
        static void Main(string[] args)
        {
            int numeroUsuario;
            Console.WriteLine("En que numero quieres empezar la cuenta regresiva?");
            numeroUsuario=Convert.ToInt16(Console.ReadLine());
            numeroUsuario++;
            Console.Clear();
            cuentaRegresiva(numeroUsuario);


        }

        public static void cuentaRegresiva(int numero)
        {
            numero --;
            if(numero > 0)
            {
                Console.WriteLine(numero);
                cuentaRegresiva(numero);
            }

            else
            {
                Console.WriteLine("Cuenta regresiva completada!");
            }

        }
    }
}

Espero que les sirva!