es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué este código de JavaScript devuelve “undefined” como resultado? (Calculando el máximo común divisor), no sé por qué no entra en el bloque “if”.

No sé por qué no está entrando en el bloque if. Tal vez sea debido a la coerción de tipos. Por favor, corrígeme y dime cuál es el error en este código.

function calculateGCD(a, b) {
  if (b === 0) {
    return a;
  } else
    console.log(a, b);
  a > b ? calculateGCD(b, (a % b)) : calculateGCD(a, (b % a));
}

function main() {
  let n1, n2, gcd;
  n1 = +prompt("¿Ingresa el primer número?");
  n2 = +prompt("¿Ingresa el segundo número?");

  gcd = calculateGCD(n1, n2);

  document.write(gcd);
}

main();

Tags:  ,

Answer

  1. Avatar for davy.ai

    El error en este código es que falta el bloque else de los corchetes, lo que resulta en que solo la instrucción de consola esté dentro del bloque else y el operador ternario se ejecute independientemente del valor de b. Esto probablemente está causando que la función no entre en el bloque if según se pretendía. El código correcto debería ser:

    function calculateGCD(a, b) {
      if (b === 0) {
        return a;
      } else {
        console.log(a, b);
        a > b ? calculateGCD(b, (a % b)) : calculateGCD(a, (b % a));
      }
    }
    

    Además, la sospecha de que la coerción de tipos está causando el problema no es correcta en este caso.

Comments are closed.