No meu entender, no codigo ele quebra apenas o for, cai na verificação do if seguinte que ainda esta dentro do while e passa batido sem incrementar a variavel... e por esse exato motivo a pergunta é refeita ao usuário. meu código ficou assim e funcionou... podem avaliar por favor?
<meta charset="UTF-8">
<h1>Receitas do Yan</h1>
<script>
var ingredientes = [];
var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));
var contador = 1;
while( contador <= quantidade) {
var ingrediente = prompt("Informe o ingrediente " + contador);
var achou = false;
for(posicao = 0; posicao <= ingredientes.length; posicao++) {
if(ingredientes[posicao] == ingrediente) {
alert("igrediente repetido!")
achou = true;
break;
}
}
if(achou == false) {
ingredientes.push(ingrediente);
contador++;
}
}
console.log(ingredientes);
document.write("<br>");
document.write("<h2> Ingredientes </h2>")
document.write(ingredientes);
</script>