Ludzie pragną czasami się rozstawać, żeby móc tęsknić, czekać i cieszyć się z powrotem.
Algorytm
wyliczania sumy podziel na dwie funkcje.
2.2.11 Napisz program, który wczytuje ze standardowego wejścia nieujemną liczbę całkowitą n i wypisuje na standardowym wyjściu następującą
√
√
√
sumę 0 + 1 + . . . + ⌊ n⌋. Algorytm wyliczania sumy podziel
na dwie funkcje.
2.2.12 Napisz program, który wczytuje ze standardowego wejścia nieujemne liczby całkowitą n i m (m > 1), i wypisuje na standardowym wyjściu
√
√
√
następującą sumę m 0 + m 1 + . . . + ⌊ m n⌋. Algorytm wyliczania
sumy podziel na dwie funkcje.
2.2.13 (*,r) Napisz funkcję, która dostaje jako argument dodatnią liczbę całkowitą n i wypisuje na standardowym wyjściu wszystkie możliwe
rozkłady liczby n na sumy dwóch kwadratów dodatnich liczb całko-
witych. Rozważ dwa przypadki:
(a) gdy „a2 + b2” i „b2 + a2” dla a 6= b traktujemy jako dwa równe
rozkłady,
(b) gdy „a2 + b2” i „b2 + a2” traktujemy jako ten sam rozkład i wy-
pisujemy tylko jedne z nich.
Jeżeli zajdzie taka potrzeba, możesz w rozwiązaniu używać funkcji
pomocniczych.
2.2.14 (*) Napisz funkcję, która dostaje jako argument dodatnią liczbę całkowitą n i wypisuje na standardowym wyjściu wszystkie możliwe rozkła-
dy liczby n na sumy kwadratów dodatnich liczb całkowitych. Rozważ
dwa przypadki analogiczne do tych z zadania 2.2.13. Jeżeli zajdzie
taka potrzeba możesz w rozwiązaniu używać funkcji pomocniczych.
2.2.15 (*) Napisz funkcję, która dostaje jako argumenty dodatnie liczby cał-
kowite n i m, i wypisuje na standardowym wyjściu wszystkie możliwe
rozkłady liczby n na sumę dwóch dodatnich liczb całkowitych pod-
niesionych do potęgi m. Rozważ dwa przypadki analogiczne do tych
z zadania 2.2.13. Jeżeli zajdzie taka potrzeba możesz w rozwiązaniu
używać funkcji pomocniczych.
2.2.16 (*) Napisz funkcję, która dostaje jako argumenty dodatnie liczby cał-
kowite n i m, i wypisuje na standardowym wyjściu wszystkie możliwe
rozkłady liczby n na sumę dodatnich liczb całkowitych podniesionych
do potęgi m. Rozważ dwa przypadki analogiczne do tych z zadania
2.2.13. Jeżeli zajdzie taka potrzeba możesz w rozwiązaniu używać
funkcji pomocniczych.
10
2. Funkcje
2.2.17 (*,r,!) Napisz funkcję, która zlicza i wypisuje na standardowym wyj-
ściu liczbę swoich wywołań.
2.2.18 (*) Napisz funkcję generującą liczby pseudolosowe. Pierwszą warto-
ścią funkcji powinna być dowolna liczba z przedziału (0, 1). Kolejne
wartości powinny być wyliczane ze wzoru xn
=
1 − x2 ,
n−1
gdzie xn to aktualna, a xn−1 to poprzednia wartość funkcji.
2.2.19 (*) Napisz funkcję, która wczytuje ze standardowego wejścia liczbę całkowitą i zwraca ją jako swoją wartość. Dodatkowo funkcja powinna sumować wszystkie dotychczas wczytane wartości i przy każdym
swoim wywołaniu wypisywać na standardowym wyjściu ich aktualną
sumę .
2.2.20 (r,!) Napisz rekurencyjną funkcję, która dla otrzymanej w argumencie nieujemnej całkowitej liczby n zwraca jako wartość n!.
2.2.21 Napisz rekurencyjną funkcję zwracającą dla otrzymanej w argumencie nieujemnej liczby całkowitej n wartość elementu o indeksie n ciągu
zdefiniowanego w następujący sposób:
a0 = 1
an = 2 ∗ an−1 + 5 dla n > 0.
2.2.22 Napisz rekurencyjną funkcję zwracającą dla otrzymanej w argumencie nieujemnej liczby całkowitej n wartość elementu o indeksie n ciągu
zdefiniowanego w następujący sposób:
a0 = a1 = 1
an = an−1 + 2 ∗ an−2 + 3 dla n > 1
.
2.2.23 (r,!) Napisz rekurencyjną funkcję zwracającą dla otrzymanej w argumencie nieujemnej liczby całkowitej n wartość elementu ciągu Fibo-
nacciego o indeksie n.
2.2.24 (*) Napisz rekurencyjną funkcję zwracającą dla otrzymanej w argumencie nieujemnej liczby całkowitej n wartość elementu o indeksie n
ciągu zdefiniowanego w następujący sposób
a0 = a1 = 1
an = a0 + a1 + ... + an−1 dla n > 1
.
2.2.25 (*) Napisz funkcję rekurencyjną, która dla otrzymanej w argumencie nieujemnej liczby całkowitej n zwraca wartość elementu o indeksie n
ciągu zdefiniowanego w następujący sposób
a0 = a1 = 1
2.2. Zadania
11
an = an−1 + n dla n parzystych
an = an−1 ∗ n dla n nieparzystych.
2.2.26 (*,r,!) Napisz funkcję rekurencyjną, która dla otrzymanej w argumencie nieujemnej liczby całkowitej n zwraca wartość elementu o indeksie
n ciągu zdefiniowanego w następujący sposób
a0 = a1 = a2 = 1
oraz dla k > 2
a3 k = a k
k
·
3· −1 + a3· −2
a3 k
k + 4
· +1 = 5 ∗ a3·
a3 k
k
· +2 = a3· +1.
2.2.27 (r) Napisz funkcję rekurencyjną, która dla otrzymanej w argumentach pary nieujemnych liczb całkowitych n i m zwraca wartość f (n, m)
gdzie funkcja f jest zdefiniowana w następujący sposób:
f (n, 0) = n
f (0, m) = m
f (n, m) = f (n − 1, m) + f (n, m − 1) + f (n − 1, m − 1) dla n, m > 0.
2.2.28 Napisz funkcję rekurencyjną, która dla otrzymanej w argumentach
pary nieujemnych liczb całkowitych n i m zwraca wartość f (n, m)
gdzie funkcja f jest zdefiniowana w następujący sposób:
f (n, 0) = n
f (n, m) = f (m, n)
f (n, m) = n − m + f (n − 1, m) + f (n, m − 1) dla n ≥ m > 0.
2.2.29 (r,!) Napisz rekurencyjną funkcję, która dostaje jako argumenty dwie dodatnie liczby całkowite n i m, i zwraca jako wartość największy
wspólny dzielnik tych liczb obliczony algorytmem Euklidesa.
2.2.30 (C++,r,!) Napisz funkcję, która dostaje jako argumenty nieujemne liczby całkowite n i m, z których co najmniej jedna jest różna od zera, i zwraca jako wartość nm. Jeżeli drugi z argumentów nie zostanie
podany, funkcja powinna zwrócić wartość n2.
2.2.31 (C++) Napisz funkcję, która dostaje jako argumenty liczbę całkowi-
√
tą m (m > 1) oraz nieujemną liczbę n i zwraca jako wartość ⌊ m n⌋.
Rozwiąż to zadanie nie wykorzystując funkcji bibliotecznych. W przy-
padku podania tylko pierwszego argumentu funkcja powinna zwracać
√
⌊ n⌋.
12
2. Funkcje
2.2.32 (C++) Napisz funkcję, która dostaje jako argumenty pięć liczb cał-
kowitych typu unsigned int i zwraca jako wartość maksimum z po-
danych liczb. Funkcję napisz w taki sposób, żeby można było jej podać
także mniejszą liczbę argumentów.
2.2.33 (C++) Napisz funkcję, która dostaje jako argumenty pięć liczb typu unsigned int i zwraca jako wartość sumę podanych liczb. Funkcję
napisz w taki sposób, żeby liczyła sumę także dwóch, trzech i czterech
argumentów.