2017-02-21 10 views
0

これは現在、私のコード:到達nonvoid機能[C]

if (f(mid >=0){ 
if (f(mid)<=tolerance){ 
return mid; 
} else if (f(mid)>lo){ 
bisection ((*f), lo, mid, tolerance); 
} else { 
return bisection ((*f), mid, hi, tolerance); 
} else { 
mid = (-1) * mid; 
if (f(mid) <= tolerance) { 
return mid; 
} else if (f(mid)> lo){ 
bisection ((*f), lo, mid, tolerance); 
} else { 
return bisection ((*f), mid, hi, tolerance); 
} 

私はここで台無しにしているかもしれないところ、私は数時間のために、この上で立ち往生してきただけで不思議

+2

は ' – cleblanc

+1

あなたの関数は' double'を返すことになっていますが、実際には '任意の値をreturn'ません(...)二分を返す'てみてください。 – AlexP

+0

*** ***の空白以外の機能の終了。 –

答えて

1

あなただけのリターンif elseリストのif部分からあなたがあなたの再帰呼び出しの結果を返す必要があります。

} else if (f(mid) > lo) { 
    return bisection ((*f), lo, mid, tolerance); 
} else { 
    return bisection ((*f), mid, hi, tolerance); 
} 
+0

2つ目の二分割呼び出しに2つの構文エラーがあります。これはcut'n'pastingコードのために得られるものです:-) – Jens

関連する問題