appurato che a me hanno dato lo stesso identico esercizio 
ecco la soluzione che proposi al tempo (il metodo usato è quello della bisezione):
codice:
#define EPS 0.000000000000001
/* I x valore da valutare
R esito se è zero o no */
int zero(double x){
return fabs(x)<EPS;
}/*zero*/
/* I1 a primo parametro
I2 b secondo parametro
R m valore per cui si azzera la funzione */
double bisez(double a,double b){
if(zero(f((a+b)/2)))
return (a+b)/2;
else
if(f((a+b)/2)<0)
return bisez((a+b)/2,b);
else
return bisez(a,(a+b)/2);
}/*bisez*/