0
我試圖用遞歸apporach寫一個平分法的程序,但它似乎不工作。帶遞歸方法的二分法?
該函數是f(x)= ax^2 + bx + c。 findroot中的參數:a b和c是f(x)中b和c的值,p和q指示區間(p,q)。假設輸入有效(總能找到答案)。這是我嘗試
int sign(float a, float b,float c,float d)
{
if (a*d*d + b*d + c > 0) {return 1;}
if (a*d*d + b*d + c < 0) {return -1;}
else {return 0;}
}
float find_root(float a, float b, float c, float p, float q)
{
if (sign(a,b,c,(p+q)/2) == 0){return (p+q)/2;}
else if (! sign(a,b,c,(p+q)/2) == sign(a,b,c,p))
{return find_root(a,b,c,p,(p+q)/2);}
else
{return find_root(a,b,c,(p+q)/2,q);}
}
任何修正或建議表示讚賞!
編輯自己的帖子的答覆和刪除quesiton不好。最好將你的帖子恢復到之前的狀態,併發布你自己的答案。你甚至可以接受你自己的答案,但由@r – chux 2015-02-05 18:25:01