Hola:
Estrictamente hablando, un bucle no necesita necesariamente un contador. Un bucle se repite mientras se cumpla una condición cualquiera, que no tiene que ser que un contador llegue a un valor.
Habitualmente, sobre todo en bucles for, la condicion es que un contador llegue a un valor, pero no es obligatorio. Por ejemplo, podrías perfectamente hacer esto
Código Java:
Ver originalboolean ranasCrienPelo=true;
for (int i=0; ranasCrienPelo==true; i++) {
}
y el bucle, incrementando el contador, se repetiría indefinidamente hasta que dentro del bucle alguien cambien el valor de la variable ranasCrienPelo a false.
Igual con el do-while o el while a secas. En tu ejemplo, el bucle, sin necesidad de contador, se repite mientras residuo no sea 0. Dentro del bucle se van asignado valores a residuo y el bucle se parará cuando se le asigne un valor cero.
Se bueno.