# Solved: fibonacci

Fibonacci series, a sequence captivating the minds of scientists and mathematicians for centuries, is also tightly bound with aesthetics, applicable in forms of pure beauty – fashion and art. It’s the series of numbers where the next number is found by adding the two numbers before it, starting with 0 and 1. This sequence shows up in natural forms such as the spiral of shells, curve of waves, unfurling of leaves, and many other natural patterns.

In programming, Fibonacci series tackle common concepts like iterations, recursion and optimization in an gradually complex manner, serving as a great testbed for fundamental and advanced coding techniques alike. Like in fashion, where different trends move in and out but some patterns prevail, programming solutions carry similar traits. And Haskell, a purely functional programming language, provides some unique and efficient ways to handle Fibonacci series.

## Computing Fibonacci in the Haskell way

```fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
```

This is the most straightforward implementation of Fibonacci series in Haskell, which directly corresponds to its mathematical definition. It uses a very fundamental concept in functional programming – recursion. However, this code is highly inefficient for large numbers due to multiple recalculation of same values.

## Improving Efficiency with Memoization

```import Data.Map (Map, lookup, insert, fromList)

memoize :: (Integer -> Integer) -> (Integer -> Integer)
memoize f = lookupAndInsert
where
lookupAndInsert :: Integer -> Integer
lookupAndInsert x = case lookup x table of
Just v  -> v
Nothing -> f x

table :: Map Integer Integer
table = fromList \$ map (x -> (x, f x)) [0 .. upperLimit]

fib :: Integer -> Integer
fib 0 = 0
fib 1 = 1
fib n = fib (n - 1) + fib (n - 2)

main :: IO ()
main = print \$ memoize fib 30
```

Here’s an optimized solution of our problem by using memoization technique, often used in functional languages like Haskell. This code stores already computed values in a table and checks this table before running the recursive operation – if the value has been computed, it simply retrieves the value from the table instead of running the computation again.

Now let’s move forward and see how we can draw parallels between Fibonacci sequence and the fashion world.

## Golden Ratio and Fashion

The Fibonacci numbers, via the golden ratio they construct, imparts an appealing proportion termed the Golden Ratio. This Golden Ratio (1.618:1) is aesthetically pleasing and comes up in fashion, architectural design and nature.

In premillennial fashion, narrow waistline flared into full hips reminiscent of the Fibonacci Spiral. The A-line dress, following a similar pattern, elongates the body and narrows the waist, a testament to Fibonacci’s presence on runway. To this day, fashion designers use this ratio consciously or subconsciously in their pieces to create looks that are visually appealing and harmonic.

## The Color Code of Fashion

Colors play an enormous part in fashion, with combinations often following the Fibonacci series. A simple outfit could follow a 1:1:2 combination, where a jacket and pants share a color, and the shirt and accessories mirror each other. Or, use a 2:3:5 combo for a coordinated three-piece outfit. This principle can be observed in many aspects of fashion styling.

Appreciating the Fibonacci sequence isn’t just about understanding mathematical or coding concepts. It’s also about perceiving the beautiful patterns that are shaped by this sequence, in art, fashion and the world around us.

Related posts: