// Funcion recursiva de cuenta regresiva del anio nuevo.
function cuentaRegresiva(numero) {
if (numero < 0) numero *= -1
if (numero != 0 ) {
setTimeout(() => {
console.log(numero)
cuentaRegresiva(--numero)
}, 1000);
}
else console.log('Feliz anio nuevo')
cuentaRegresiva(-5)
// Escribe una función recursiva para un timer que cada 5 minutos se agregue 10 minutos más a su cuenta total.
function timerRecursivo(minutos = 0) {
setTimeout(() => {
if(minutos%5===0 && minutos!==0 && minutos%10!==0) {
console.log(minutos+=5)
} else console.log(++minutos)
timerRecursivo(minutos)
}, 1000);
}
timerRecursivo()
// Escribe una función recursiva para encontrar el número mayor de un array.
function mayorRecursivo(array){
if (array.length !== 1) {
array[0] > array[array.length - 1]
? array.pop()
: array.shift()
mayorRecursivo(array)
}
if (array.length === 1) return array*1
}
console.log(mayorRecursivo([1,2,4,3]))
// Escribe una función recursiva para escribir la serie Fibonacci hasta su décima iteración.
function fibonacciRecursivo(veces = 10) {
let counter = 0
let last = 0
function calculateFibo(current = 1) {
if(counter != veces) {
++counter
const result = current + last
last = current
return `, ${result}${calculateFibo(result)}`
} else return ''
}
return `0, 1${calculateFibo()}`
}
console.log(fibonacciRecursivo(10))
// Escribe una función recursiva para generar un password aleatorio con 20 caracteres combinando letras-números-símbolos-números-letras-día-new-año.
function contraseniaRecursiva(stringLength) {
let newPassword = new Date().toLocaleDateString('en-GB').replace(/\\//ig, '')
function addRandomUnicode() {
const random = String.fromCharCode(Math.floor(Math.random() * (122 - 33)) + 33);
newPassword = `${random}${newPassword}`
if (newPassword.length !== stringLength) return `${addRandomUnicode()}`
else return newPassword
}
return addRandomUnicode()
}
console.log(contraseniaRecursiva(20))
// Escribe una función recursiva para convertir de minúscula a mayúscula el primer y último carácter de un string.
function capitalizeRecursivo(str) {
let current = 0
function checkToCapitalize() {
if (current !== str.length - 1) {
const currentValue = current !== 0 ? str[current++] : str[current++].toUpperCase()
return `${currentValue}${checkToCapitalize()}`
}
else return `${str[current++].toUpperCase()}`
}
return checkToCapitalize()
}
console.log(capitalizeRecursivo('holaquehace'))
// Muestra los likes
const likes = (names) => ({
0: "no one likes this",
1: `${names[0]} likes this`,
2: `${names[0]} and ${names[1]} like this`,
3: `${names[0]}, ${names[1]} and ${names[2]} like this`,
4: `${names[0]}, ${names[1]} and ${names.length - 2} like this`,
}[names.length]);
const opciones = {
0: "no one likes this",
1: `${names[0]} likes this`,
2: `${names[0]} and ${names[1]} like this`,
3: `${names[0]}, ${names[1]} and ${names[2]} like this`,
4: `${names[0]}, ${names[1]} and ${names.length - 2} others like this`,
}
const likes = (names) => opciones[names.length];
const likes = (names) => ([
"no one likes this",
`${names[0]} likes this`,
`${names[0]} and ${names[1]} like this`,
`${names[0]}, ${names[1]} and ${names[2]} like this`,
`${names[0]}, ${names[1]} and ${names.length - 2} others like this`
][names.length]);
