Problemas con float en C

Tengo este pequeño progtwig en C que calcula la raíz cuadrada x de un entero positivo N usando una función recursiva (implementada usando un ciclo while). Si calculo x usando esto:

 x = (1/2)*(x + N/x) //x0 = 1.0 

Entonces x sigue creciendo inf y luego nan. Sin embargo, si uso esto:

 x = (x + N/x)/2 //x0 = 1.0 

Funciona bien, ¿por qué? Gracias.

1/2 hace división entera, su resultado es 0 , cambie uno o ambos operandos a double , por ejemplo:

 1.0/2