Skip to content
This repository was archived by the owner on May 22, 2026. It is now read-only.

Commit 23b15a7

Browse files
chore: add fibonacci
1 parent b5fcaf1 commit 23b15a7

2 files changed

Lines changed: 27 additions & 0 deletions

File tree

etc/fibonacci.hs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
-- 無限リストを使ったメモ化フィボナッチ
2+
fibs :: [Int]
3+
-- [0, 1]は初期値にする
4+
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
5+
-- fibsにtail fibs(先頭を1つ落としたfibs)を足す。
6+
-- ghci> 0 : 1 : zipWith (+) [0,1,1,2,3] [1,1,2,3]
7+
-- [0,1,1,2,3,5]
8+
9+
main :: IO ()
10+
main = do
11+
print $ take 36 fibs

etc/fibonacci_old.hs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import Data.Array
2+
3+
-- nまでのフィボナッチ数列を計算して配列にキャッシュ
4+
fibonacciArray :: Int -> Array Int Int
5+
fibonacciArray n = arr
6+
where
7+
arr = listArray (0, n) [fib i | i <- [0..n]]
8+
fib 0 = 0
9+
fib 1 = 1
10+
fib i = arr ! (i - 1) + arr ! (i - 2) -- 計算済みを参照
11+
12+
main :: IO ()
13+
main = do
14+
let n = 35
15+
let fibs = fibonacciArray n
16+
print [fibs ! i | i <- [0..n]]

0 commit comments

Comments
 (0)