Created
January 4, 2023 01:51
-
-
Save KarlHeitmann/1b4fb8f0e8388419a2157bcbab6cac25 to your computer and use it in GitHub Desktop.
Ejemplos fibonacci y recursividad, tareas e ideas para practicar recursividad
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Correrlo con: | |
// node recursividad.js | |
/* FIBONACCI | |
1, 1, 2, 3, 5, 8, 13, 21 | |
1 | |
1 | |
1+1 = 2 | |
2 + 1 = 3 | |
3 + 2 = 5 | |
5 + 3 = 8 | |
8 + 5 = 13 | |
*/ | |
function fibonacci(n) { | |
let ultimo_n = 1 | |
let penultimo_n = 1 | |
if (n == 1) { | |
return 1 | |
} else if (n == 2) { | |
return 1 | |
} else { | |
let auxiliar = null | |
for (let i = 2; i < n; i++) { | |
auxiliar = ultimo_n + penultimo_n | |
penultimo_n = ultimo_n | |
ultimo_n = auxiliar | |
} | |
return ultimo_n | |
} | |
} | |
function fibonacci_recursivo(n) { | |
if (n == 1) { | |
return 1 | |
} else if (n == 2) { | |
return 1 | |
} else if (n > 2) { | |
return fibonacci_recursivo(n - 1) + fibonacci_recursivo(n - 2) | |
} | |
} | |
console.log("fibo(1) = ", fibonacci(1)) | |
console.log("fibo(2) = ", fibonacci(2)) | |
console.log("fibo(3) = ", fibonacci(3)) | |
console.log("fibo(4) = ", fibonacci(4)) | |
console.log("fibo(5) = ", fibonacci(5)) | |
console.log("fibo(6) = ", fibonacci(6)) | |
console.log("fibo(10) = ", fibonacci(10)) | |
console.log("fibo(25) = ", fibonacci(25)) | |
console.log("fibo(100) = ", fibonacci(100)) | |
console.log("================ RECURSIVIDAD =====================") | |
console.log("fibo(1) = ", fibonacci_recursivo(1)) | |
console.log("fibo(2) = ", fibonacci_recursivo(2)) | |
console.log("fibo(3) = ", fibonacci_recursivo(3)) | |
console.log("fibo(4) = ", fibonacci_recursivo(4)) | |
console.log("fibo(5) = ", fibonacci_recursivo(5)) | |
console.log("fibo(6) = ", fibonacci_recursivo(6)) | |
console.log("fibo(10) = ", fibonacci_recursivo(10)) | |
console.log("fibo(25) = ", fibonacci_recursivo(25)) | |
// Calcule la suma de los elementos del array | |
let suma = 0 | |
const arr1 = [1,2,3,4,5,6,7,8,9,10] | |
for (let i = 0; i < arr1.length; i++) { | |
const element = arr1[i]; | |
suma = suma + element | |
// debugger | |
console.log("i = ", i, " - element = ", element, " - suma = ", suma) // <<--- esto me indica que es lo que está pasando en cada vuelta | |
} | |
/* | |
let i = 0 | |
let sumaa = 0 | |
while (i < arr1.length) { | |
const element = arr1[i] | |
sumaa = sumaa + element | |
// i = i + 1 // Si te olvidas => | |
} | |
*/ | |
console.log("############################") | |
console.log("Suma array = ", suma) | |
// Calcule la suma de los elementos del array arr1 SIN ocupar FOR y sin escribirlo manualmente. SOLO CON FUNCIONES. | |
// PASO 1: IDENTIFIQUE EL CASO TRIVIAL. Coloque su return. | |
// ==> ¡¡¡ARREGLO VACIO!!! | |
// arr1 = [] | |
// PASO 2: Tomar el caso general y moverlo hacia el caso trivial, dirigirlo. | |
// const arr1 = [1,2,3,4,5,6,7,8,9,10] | |
// [2,3,4,5,6,7,8,9,10] | |
// [3,4,5,6,7,8,9,10] | |
// [4,5,6,7,8,9,10] | |
// [5,6,7,8,9,10] | |
// ... | |
// [] => 0 | |
function sumar_func(arr) { | |
if (arr.length == 0) { // CASO TRIVIAL | |
// console.log("BINGO!!! Condición de término alcanzada!!!") // CUIDADO!!! Esto puede generar confusion | |
return 0 | |
} else if (arr.length > 0) { | |
const primer_elemento = arr[0] | |
// console.log("primer_elemento = ", primer_elemento, "arr.length = ", arr.length) // CUIDADO!!! Esto puede generar confusion | |
const auxiliar = primer_elemento + sumar_func(arr.slice(1)) | |
// console.log("auxiliar = ", auxiliar) // CUIDADO!!! Esto puede generar confusion | |
return auxiliar | |
// 1+2+3+4+5+6+7+8+9+10+0 | |
} | |
} | |
// EJERCICIO: Hacer lo mismo de sumar_func, pero multiplicando los elementos del arr1. | |
// EJERCICIO 2: modificar sumar_func, pero que tome el ULTIMO elemento del array. .slice(0, arr1.length - 1) | |
// const arr1 = [1,2,3,4,5,6,7,8,9,10] | |
// [1,2,3,4,5,6,7,8,9] | |
// [1,2,3,4,5,6,7,8] | |
// DESAFIO: METERSE A HACKER RANK. Busca problemas de "algoritmo" BASICOS. Nivel programación cero, que se resuelven usando FOR. PERO ponte el desafio personal de resolverlo con recursividad. | |
/* | |
suma NEUTRO ADITIVO es el CERO | |
Multiplicacion NEUTRO MULTIPLICATIVO es el UNO | |
MATRICES NEUTRO multiplicativo de matrices | |
[1, 0, 0] | |
[0, 1, 0] | |
[0, 0, 1] | |
*/ | |
console.log("Suma array RECURSIVO = ", sumar_func(arr1)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment