関数型プログラミング言語Haskell Part4
■ このスレッドは過去ログ倉庫に格納されています
0684デフォルトの名無しさん
2006/05/01(月) 10:57:31--リストの中央インデックスを求める
middle :: [a] -> Int
middle [] = -1
middle x = (ceiling half) - 1
where half = fromIntegral (length x) / fromIntegral 2
--リストの中央値を返す
median :: [a] -> a
median x = x !! (middle x)
bsearch k [] = -1
bsearch k x
| median x > k = bsearch k (take (middle x) x)
| median x == k = middle x
| median x < k = middle x + 1 + bsearch k (drop ((middle x)+1) x)
「bsearch k [] = -1」が悪いのはわかってるんだが、
うまく動くよう記述する方法がわかんない。
どうすればいい?
■ このスレッドは過去ログ倉庫に格納されています