Skip to content

Commit db08f57

Browse files
authored
Merge pull request mouredev#6809 from victor-Casta/[email protected]
#24 - JavaScript
2 parents cecf7e8 + 7c2e38f commit db08f57

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
(() => {
2+
/*
3+
* EJERCICIO:
4+
* Entiende el concepto de recursividad creando una función recursiva que imprima
5+
* números del 100 al 0.
6+
*/
7+
8+
const printNumbers = (a: number): void => {
9+
if (a < 0) return
10+
console.log(a)
11+
printNumbers(a - 1)
12+
}
13+
14+
printNumbers(100)
15+
16+
/*
17+
* DIFICULTAD EXTRA (opcional):
18+
* Utiliza el concepto de recursividad para:
19+
* - Calcular el factorial de un número concreto (la función recibe ese número).
20+
* - Calcular el valor de un elemento concreto (según su posición) en la
21+
* sucesión de Fibonacci (la función recibe la posición).
22+
*/
23+
24+
const factorial = (n: number): number => {
25+
if (n < 1) return 1
26+
return n * factorial(n - 1)
27+
}
28+
29+
console.log(factorial(8))
30+
31+
const fibonacci = (position: number): number => {
32+
if (position === 0) {
33+
return 0
34+
}
35+
if (position === 1) {
36+
return 1
37+
}
38+
return fibonacci(position - 1) + fibonacci(position - 2)
39+
}
40+
console.log(fibonacci(7))
41+
})()
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
* EJERCICIO:
3+
* Explora el concepto de "decorador" y muestra cómo crearlo
4+
* con un ejemplo genérico.
5+
*/
6+
7+
function withprintResult(func) {
8+
return function (...parameters) {
9+
console.log("Parámetros:", parameters)
10+
const result = func(...parameters)
11+
console.log("Resultado:", result)
12+
return result
13+
}
14+
}
15+
16+
function sum(a, b) {
17+
return a + b
18+
}
19+
20+
function multiply(a, b) {
21+
return a * b
22+
}
23+
24+
const sumDecorator = withprintResult(sum)
25+
const multiplyDecorator = withprintResult(multiply)
26+
27+
sumDecorator(2, 1)
28+
multiplyDecorator(2, 3)
29+
30+
/*
31+
* DIFICULTAD EXTRA (opcional):
32+
* Crea un decorador que sea capaz de contabilizar cuántas veces
33+
* se ha llamado a una función y aplícalo a una función de tu elección.
34+
*/
35+
36+
function counterDecorator(func) {
37+
let counter = 0;
38+
return function (...parameters) {
39+
counter++;
40+
console.log(`La función ha sido llamada ${counter} veces`)
41+
return func(...parameters)
42+
};
43+
}
44+
45+
function firstFunction() {
46+
console.log("Función ejecutada")
47+
}
48+
49+
const decoratedFunction = counterDecorator(firstFunction)
50+
51+
decoratedFunction()
52+
decoratedFunction()
53+
decoratedFunction()

0 commit comments

Comments
 (0)