Vabbe', questo succede al primo giro perchè non sono inizializzate, l'esempio è veramente assurdo. Comunque sostituisci le 3 righe così:

$n1 = isset($_POST['n1']) ? $_POST['n1'] : 0; $n2 = isset($_POST['n2']) ? $_POST['n2'] : 0; $n3 = isset($_POST['n3']) ? $_POST['n3'] : 0;

In realtà andrebbe fatto bene che se non ci sono variabili in post allora lancia il form, altrimenti fa vedere i valori...