HASKELL, ćwiczenie 2

1) Zdefiniuj funkcję rekurencyjną fib :: Int -> Int wyznaczającą wyrazy ciągu Fibonacci’ego: fib0 = 1

fib1 = 1

fibn = fibn-1 +fibn-2 dla n > 1

na wszystkie 4 sposoby i sprawdź, który sposób definiowania jest najkorzystniejszy.

2) Zdefiniuj funkcję rekurencyjną suma_ciagu :: Int -> Float, która dla danej liczby n daje sumę

1

1

1

1 +

+ +

K

+ n

2

3

3) Zdefiniuj funkcję suma_listy:: [Int]->Int, która dla danej listy liczbowej wyznacza sumę jej elementów.

4) Zdefiniuj funkcję usun:: Int ->[Int]->[Int], która z danej listy liczbowej usuwa wszystkie wystąpienia danego elementu na tej liście.

5) Zdefiniuj funkcję dzielnik :: Int -> [Int], która dla danej liczby dodatniej podaje listę jej dzielników, a dla pozostałych liczb typu Int – listę pustą. Skorzystaj ze zwięzłego sposobu definiowania list.

6) Zdefiniuj funkcję fib_n :: Int -> [Int], która dla danej liczby n wyznacza listę n pierwszych elementów ciągu Fibonacci’ego