Recursividad
Publicado por edwin (2 intervenciones) el 29/04/2020 04:57:04
holaa, alguien podria ayudarme, me estoy iniciando en javascript, estudiando del libro de eloquent javascript, pero tengo una duda, el codigo es el sig
se supone que lo que hace la funcion es encontrar para un numero dado, cual seria la operacion sumando 5 y multiplicando por 3 que de ese numero, por ejemplo para el caso de 24, la respuesta seria '(((1 * 3) + 5) * 3)', esta es la cadena que devuelve finalmente la funcion, en el libro hay un diagrama que trata de explicar como funciona para el numero 13, es el siguiente
entiendo hasta antes de llegar a 18, lo ultimo que hace es que cuando llega a find con 16 y despues con 32, deberia retornar null || null, pero no entiendo de donde sale ese 18, aiudaaa. gracias :3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function findSolution(target) {
function find(current, history) {
if (current == target) {
return history;
} else if (current > target) {
return null;
} else {
return find(current + 5, `(${history} + 5)`) ||
find(current * 3, `(${history} * 3)`);
}
}
return find(1, "1");
}
console.log(findSolution(24));
// → (((1 * 3) + 5) * 3)
se supone que lo que hace la funcion es encontrar para un numero dado, cual seria la operacion sumando 5 y multiplicando por 3 que de ese numero, por ejemplo para el caso de 24, la respuesta seria '(((1 * 3) + 5) * 3)', esta es la cadena que devuelve finalmente la funcion, en el libro hay un diagrama que trata de explicar como funciona para el numero 13, es el siguiente
1
2
3
4
5
6
7
8
9
10
11
12
13
find(1, "1")
find(6, "(1 + 5)")
find(11, "((1 + 5) + 5)")
find(16, "(((1 + 5) + 5) + 5)")
too big
find(33, "(((1 + 5) + 5) * 3)")
too big
find(18, "((1 + 5) * 3)")
too big
find(3, "(1 * 3)")
find(8, "((1 * 3) + 5)")
find(13, "(((1 * 3) + 5) + 5)")
found!
entiendo hasta antes de llegar a 18, lo ultimo que hace es que cuando llega a find con 16 y despues con 32, deberia retornar null || null, pero no entiendo de donde sale ese 18, aiudaaa. gracias :3
Valora esta pregunta


0