Datastrukturer – gratis prøvekapittel: Lister
Lister: Eksempler
Her har vi brukt operatoren and
for å løse oppgaven. På linje #7# tester vi to ting som må være sanne samtidig, nemlig at #\textit{t}# skal være delelig med #7#, og at #\textit{t}# ikke skal være delelig med #3#. Vi kunne også ha skrevet
Forsøk gjerne å endre på koden i eksempelet.
De neste eksemplene viser at det er nyttig å bruke lister når vi jobber med rekursive sammenhenger.
Følgen #\{a_n\}# er gitt ved at #a_0=2# og #a_{n+1}=3 \cdot a_n -1#. Lag en liste bestående av de #10# første elementene i følgen.
Løsning 1:
Vi kan starte med en tom liste L
og det første leddet a
. Vi legger a
til listen og lager vår nye verdi for a
ved å bruke den rekursive sammenhengen.
Dette gjør vi #10# ganger ved å bruke en for-løkke:
Løsning 2:
En annen måte å løse oppgaven på, er å lage en liste bestående av #10# tall (for eksempel null) og så omdefinere alle tallene i listen i en for-løkke. Vi vil da benytte et lite triks. Om vi lager listen M=[0]
og så multipliserer denne med #10#, vil vi få en rekke bestående av #10# nuller:
Resultatet blir det samme. Det som kan være fordelen med løsning #2#, er at definisjonen i for-løkken ser veldig lik ut den opprinnelige rekursive sammenhengen.
En følge #{b_n}# er gitt ved
#b_0 = 1, \quad b_1 = 2#
#b_{n+2} = b_{n+1} \cdot b_{n-1}#
Lag en liste bestående av de 15 første elementene i følgen.
Vi starter med å lage en liste B
bestående av #15# nuller (som vi skal omdefinere). Vi setter første element til å være #1# og andre element til å være #2# (men husk at nummereringen i Python starter på #0#). Så omdefinerer vi alle de andre elementene ved å bruke den rekursive sammenhengen:
Legg merke til at vi må passe på at i
ikke blir for stor i løkken. Vi har i utgangspunktet kun #15# elementer å omdefinere i liste, så #\texttt{i+2=14}# gir oss #\texttt{i=12}#. Vi må derfor la sluttverdien i range-funksjonen være #12+1=13#.