[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
以下を参考に再帰的二分探索を作成せよ。
int binsearch (int x, int v[], int n)
{
int p, q, m;
p = 0;
q = n – 1;
while (p <= q) {
m = (p + q)/2;
if (x < v[m])
q = m – 1;
else if (x > v[m])
p = m + 1;
else
return m;
}
return –1;
•入力:int x, int v[], int n (binsearchに同じ)
•出力:配列vにxが存在すれば、その場所(添字)。存在しなければ,-1
• プログラムの構造
– ループを使用せず,関数の再帰呼び出しを使うこと
– 外部変数で値の受け渡しをしないこと
[3] 環境
[3.1] OS:windows 7
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c言語
[4] 期限:2011/10/15 23:00
[5] その他の制限:配列は整数で昇順にソートされている前提でした。授業では配列、ポインタは習っています。よろしくお願いします。