Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

168
Visualizações
Función idéntica conduce a diferentes resultados en diferentes idiomas

Escribí una función en javascript que se supone que devuelve el número primo más bajo mayor que x. En cambio, queda atrapado en una recursividad indefinida.

 function next_prime(x) { if (x <= 1) { return 2; } y = 2; z = x + 1; while(true) { if (z % y == 0) { z++; y = 2; continue; } if(y * y > z) { return z; } y = next_prime(y); } }

No entendí qué estaba mal, así que implementé la misma función en python, donde funcionó bien.

 def next_prime(x): if x <= 1: return 2 y = 2 z = x + 1 while True: if z % y == 0: z += 1 y = 2 continue if y * y > z: return z y = next_prime(y)

Revisé ambas funciones y estoy seguro de que son idénticas, pero en python funciona y en javascript no.

Aunque se agradece, no necesariamente estoy buscando ayuda con este problema específico, estoy más interesado en lo que realmente está sucediendo aquí.

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Creo que el problema es que no estás declarando tus variables correctamente. En JavaScript, debe usar las palabras clave let y const , que significan variables reasignables y no reasignables, al declarar una nueva variable. Cuando se usan las líneas let in cinco y seis, la función funciona bien.

about 4 years ago · Santiago Trujillo Relatório

0

Debe usar el modo estricto para evitar este error común de los principiantes de javascript.

su código js real con 'uso estricto'; se rechaza :

 'use strict'; console.log( next_prime(7) ) // never run on strict mode, otherwise make an infinite loop function next_prime(x) { if (x <= 1) { return 2; } y = 2; z = x + 1; while(true) { if (z % y == 0) { z++; y = 2; continue; } if(y * y > z) { return z; } y = next_prime(y); } }

mismo código en la sintaxis javascript correcta:

 'use strict'; console.log( next_prime(7) ) // -> 11 function next_prime(x) { if (x <= 1) return 2 ; let y = 2, z = x + 1 // declare y and z as locale ; while(true) { if (z % y == 0) { z++; y = 2; continue; } if (y**2 > z) return z ; y = next_prime(y); } }

explicación: su código es recursivo, la llamada interna cambiará el valor de y y z en las llamadas principales y hará un ciclo infinito

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda