9 lines
248 B
Scala
9 lines
248 B
Scala
def Y[A, B](f: (A ⇒ B) ⇒ (A ⇒ B)): A ⇒ B = f(Y(f))(_)
|
|
|
|
def fib(n: Int): Option[Int] =
|
|
if (n < 0) None
|
|
else Some(Y[Int, Int](f ⇒ i ⇒
|
|
if (i < 2) 1
|
|
else f(i - 1) + f(i - 2))(n))
|
|
|
|
-2 to 5 map (n ⇒ (n, fib(n))) foreach println
|