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
wybranym sposobem
2) Zdefiniuj funkcję rekurencyjną suma_ciagu, która dla danej liczby n daje sumę
1
1
1
1 +
+ +
K
+ n
2
3
Spróbuj przypisać tej funkcji odpowiedni typ, a następnie sprawdź jaki typ zostanie
przypisany tej funkcji w Haskellu.
3) Zdefiniuj funkcję rekurencyjną suma_listy :: [Int]->Int, która dla danej listy liczbowej wyznacza sumę jej elementów.
Rozpisz jak wygląda ewaluacja wyrażenia: suma_listy [1,9,5,8].
4) Zdefiniuj funkcję rekurencyjną usun :: Int ->[Int]->[Int], która z danej listy liczbowej usuwa wszystkie wystąpienia danego elementu na tej liście.
Rozpisz jak wygląda ewaluacja wyrażenia: usun 2 [1,2,2,5,8,2].
5) Zdefiniuj funkcję wstaw :: Int ->[Int]->[Int], która do danej listy liczbowej wstawia liczbę w odpowiednie miejsce tak, że lista wynikowa jest również uporządkowana.
Rozpisz jak wygląda ewaluacja wyrażenia: wstaw 5 [1,2,8,9].
6) Zdefiniuj funkcję rekurencyjną dzielniki :: Int -> [Int]-> [Int], która z danej listy liczbowej wybiera dzielniki danej liczby naturalnej.
7) Zdefiniuj następujące funkcje:
ostatni – wybiera ostatni element listy
usun_ostatni – usuwa ostatni element listy
na dwa sposoby (bez rekurencji) korzystając wyłącznie z funkcji: head, tail, reverse, length
oraz operatora !!.