Oi João, tudo bem?
Antes de analisarmos o porque de estar dando esse erro, precisamos trocar o operador lógico && (AND) pelo || (OR) no seu if
.
Aqui a condição está como:
se numero for igual a 33 E numero for igual a 37, faça {...}
if (numero == 33 && numero == 37) {
numero = numero + 1
}
Perceba que essa condição nunca será verdadeira, pois o número jamais terá o valor de 33 e 37 ao mesmo tempo. Para resolver isso, trocamos o operador &&
pelo ||
. Dessa forma, a condição ficará assim:
se numero for igual a 33 OU numero for igual a 37, faça {...}
if (numero == 33 || numero == 37) {
numero = numero + 1;
}
Bom, voltando ao tópico principal.
O motivo para o programa estar entrando em um loop infinito está no else
:
if (numero == 33 || numero == 37) {
numero = numero + 1;
}
else {
mostra(numero);
}
Perceba que o if está incrementando o numero, enquanto que dentro do else, só está sendo exibido o numero e nada mais, fazendo com que o programa nunca saia do else. Então vamos incrementar dentro dele também, dessa forma após imprimirmos o número na tela, iremos para o próximo:
if (numero == 33 || numero == 37) {
numero = numero + 1;
}
else {
mostra(numero);
numero = numero + 1;
}
Acredito que após essas duas pequenas mudanças, o seu código vai rodar do jeito que você quer!
Bons estudos!!