1 svar
108 visningar
Biorr 2008
Postad: 15 sep 23:32

Fibonacci



hejsan 

skulle jag kunna få lite tips på övning 4.7?

cechak 96 – Livehjälpare
Postad: 16 sep 12:32

Hej Biorr God morgon!

Jag har läs programmering C och C++ en gång i tiden och jag kom ihåg att Fibonacci talen och rekursion var en stor del av kursen. Väldigt klurig till att börja med. Men när man förstår går det lättare särskilt när man programmerar.

Vi gör det ett försökt så här:

Om man tittar i början av övningen det är källkoden (i språket C) som uppgiften syftar på.

När programmet körs ser vi i koden att:

Om n == 0 körs return 0; (basfallet f0som uppgiften frågar efter).

Om n == 1 körs return 1; (Basfallet f1).

Annars delas anropet upp i två nya grenar: fibo(n-1) + fibo(n-2).

Den rekursiva formeln för följden bn ger b0 = 1, b1= 0

Följden bn  beskriver hur många gånger funktionen hamnar i basfallet n == 0 (vilket ger f0. Genom att titta noga på källkoden får vi följande rekursiva definition: b0 = 1 ,  b1= 0.

För att beräkna ett steg delas koden upp i de två föregående stegen, gör att antalet basfallsanrop adderas på samma sätt som i Fibonacciföljden : bn=bn-1+bn-2==>n≥2

Genom att räkna ut värdena steg för steg från b0 till b9får vi följande tio tal:

b0=1 om n = 0 körs basfallet direkt 1 gång ;  b1=0 om n=1 andra basfallet körs och f0plockas fram 0 gånger.

b2=b1+b0 = 0+1 = 1; b3=b2+b1= 1+0 = 1; b4=b3+b2=1+1 = 2; b5=b4+b3=2+1 = 3

b6=b5+b4=3+2=5; b7=b6+b5=5+3=8; b8=b7+b6=8+5 = 13; b9=b8+b7=13 +8 =21

De tio forsta talen är : 1, 0, 1, 1, 2, 3, 5, 8, 13, 21

Det är min lösning utifrån utifrån den givna C-koden för Fibonaccifunktionen. Om någon vill addera ytterligare synpunkter eller kommentera resultatet, måste du även iaktta och ta hänsyn till de kommentarerna.

Lycka till med matte studierna!

Svara
Close