[[ProjectEular]]

 -- Problem 28
 
 module Main (main) where
 
 main :: IO ()
 main = print $ problem28
 
 problem28 :: Int
 problem28 = calc_iter 1001
 
 calc_iter :: (Integral a) => a -> a
 calc_iter n
     | n < 1     = error "must be a positive odd."
     | even n    = error "must be a positive odd."
     | n == 1    = 1
     | otherwise = 4*n^2 - 6*(n-1) + calc_iter (n-2)
 
 {-
      n^2-(n-1)  ...     n^2
          :               :
          :       1       :
          :               :
     n^2-2*(n-1) ... n^2-3*(n-1)
 -}


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS