Napiši funkcijo Kombinacije(t, k)
, ki kot parametra dobi tabelo t in naravno število k ter izpiše vse možne izbore k elementov tabele t. Primer: če je t = [10, 20, 30]
in k = 2
, moramo izpisati tri izbore: [10, 20]
, [10, 30]
in [20, 30]
.
Začnimo kar pri prvem elementu tabele t: tega lahko vključimo v nek izbor ali pa ne. Če ga vključimo v izbor, moramo izbrati tudi
V vsakem primeru torej pridemo do podproblema, ki je podobne oblike kot prvotni problem, le da se ne začne pri prvem elementu tabele, ampak šele pri drugem. Zato bomo lahko, če primerno napišemo funkcijo za generiranje vseh možnih izborov, ta podproblem reševali z isto funkcijo kot prvotni problem (glej program v nadaljevanju).
(a) Preizkusi tu prikazano funkcijo Kombinacije
še na večjem primeru (na primer na tabeli s 5 elementi in s k = 3
).
(b) Na začetek in konec funkcije NastejIzbore
dodaj stavke, ki izpišejo vrednosti parametrov, in z njihovo pomočjo opazuj, kako se gnezdijo klici funkcije in kaj se dogaja v njih.
(c) Spremeni funkciji tako, da izborov ne izpisujeta, pač pa vrneta število, ki pove, koliko je takih izborov.