Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

149
Views
¿Por qué esta función recursiva cuenta tanto hacia atrás como hacia arriba?

Es contrario a la intuición por qué esta función recursiva cuenta tanto hacia atrás como hacia arriba. ¿Alguien puede explicarlo?

 function counter(value, limit) { if (value === limit) { console.log(value); } else { console.log('going up:', value); // on the way down / going deeper (increment) counter(value + 1, limit); console.log('going down:', value); // on the way up / coming up from the depths (decrement) } } counter(0, 3);

Apéndice

Noté que cuando agrego un setTimeOut() , genera los valores previos y posteriores juntos en lugar de uno arriba y otro abajo.

 going up: 0 going down: 0 2022-03-07T14:33:38.701Z going up: 1 going down: 1 2022-03-07T14:33:39.213Z going up: 2 going down: 2 2022-03-07T14:33:39.726Z 3
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Esto podría ayudar:

¿Qué pasa si comenzamos con esta versión en su lugar?

 function counter(value, limit) { if (value === limit) { console.log(value); } else { console.log('going up:', value); console .log ('*** Do some more stuff ***'); console.log('going down:', value); } } counter(0, 3);

Entonces obtendríamos esta salida:

 going up: 0 *** Do some more stuff *** going down: 0

Ahora, reemplacemos ese hacer-más-cosas con el resultado de llamar a counter (value + 1, limit) , que es counter (1, 3) , cuyo resultado sería:

 going up: 1 *** Do some more stuff *** going down: 1

Sustituyendo eso, obtenemos:

 going up: 0 going up: 1 *** Do some more stuff *** going down: 1 going down: 0

haciendo otro nivel, llamaríamos al contador (2, 3) para obtener

 going up: 2 *** Do some more stuff *** going down: 2

y reemplazando eso en lo anterior, obtenemos

 going up: 0 going up: 1 going up: 2 *** Do some more stuff *** going down: 2 going down: 1 going down: 0

Pero ahora llamamos al counter (3, 3) y el resultado es que simplemente registramos el valor:

 3

Sustituyendo eso, obtenemos

 going up: 0 going up: 1 going up: 2 3 going down: 2 going down: 1 going down: 0

Por supuesto, en tiempo de ejecución no existen tales sustituciones reales. Pero podemos pensar en la llamada recursiva como algo que se atasca entre "subir" y "bajar", y cualquier resultado se colocará entre esos dos.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!