Datastrukturer – gratis prøvekapittel: Lister

Teori Lister: Eksempler

Lag et program som finner alle naturlige tall mellom #1000# og #4000# som er delelig med #7#, men ikke delelig med #3#.



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

if t % 7 == 0 and not (t % 3 == 0):

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#.

Cappelen Damm Kontakt: cda-matematikk@cappelendamm.no | Hva er Student? | Personvernerklæring | Rettigheter