こんにちは。早川です。

On Thu, 20 Mar 2003 01:35:16 +0900 (JST)
Nobuo Yamashita <nobsun / sampou.org> wrote:
> > まずは自分も1つ tailn 関数を考えてみました。
> > 
> > tailn n xs | length xs <= n = xs
> >            | otherwise      = tailn n (tail xs)
> 
> これだと、計算オーダが O(n^2) になると思いますが。。。

あっ、再帰の中で length を使ってるからですか??
う〜ん、もっと精進します。

以下のようなものを一般化できないかな、と考えたのですが
挫折しました。。
-- 逆に、これを一般化するためには
-- 豊福さんのようなアプローチが必要なのでしょうか

tail1 ls@(l1:[])       = ls
tail1 []               = []
tail1 (_:ls)           = tail1 ls

tail2 ls@(l1:l2:[])    = ls
tail2 ls@(l1:[])       = ls
tail2 []               = []
tail2 (_:ls)           = tail2 ls

tail3 ls@(l1:l2:l3:[]) = ls
tail3 ls@(l1:l2:[])    = ls
tail3 ls@(l1:[])       = ls
tail3 []               = []
tail3 (_:ls)           = tail3 ls

...

--
SH
tetryl / tokyoprogrammer.com


--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/