Vinnaren i pepparkakshustävlingen!
2018-01-01, 13:00
  #1
Medlem
Ketaminkillen1s avatar
Hej Flashback!

Nu är det så att jag sitter och lär mig JavaScript, och jag skulle väl kunna påstå att jag kan grunderna åtminstone någorlunda.

Jag skulle vilja generera Fibonaccis talserie med hjälp av ett script. Saken är bara den att jag verkligen inte förstår de exempel som visas på Google eller YouTube, så om någon känner sig manad så får vederbörande mer än gärna hjälpa mig

Fibonaccis talserie känner ni säkerligen igen och ser ut såhär:

Citat:
0, 1, 1, 2, 3, 5, 8, 13...

Man kan även skriva den såhär:

Citat:
1, 1, 2, 3, 5, 8, 13...

Jag kommer inte särskilt långt genom att tänka efter själv och på så sätt komma underfund med vad jag måste koda. Det enda jag har kommit fram till är att jag behöver en del variabler, och sedan någon form av loop, förslagsvis en while-loop.

En variabel ska innehålla en tom array, som ska husera talen som genereras. Sedan misstänker jag att jag behöver två variabler som innehåller de två första talen i talserien.

Längre än så har jag faktiskt inte kommit. Om någon skulle kunna visa mig i rätt riktning så vore jag oerhört tacksam!

PS. Rekursiva varianter undanbedes då jag vill hålla det så simpelt som möjligt!
Citera
2018-01-01, 13:07
  #2
Medlem
vtcs avatar
Iterera över arrayens index i din loop. Sätt värdet för nuvarande index till summan av de två föregående värdena i varje iteration.
Citera
2018-01-01, 13:08
  #3
Medlem
Ketaminkillen1s avatar
Citat:
Ursprungligen postat av vtc
Iterera över arrayens index i din loop. Sätt värdet för nuvarande index till summan av de två föregående värdena i varje iteration.

Skulle du kunna ge mig ett kodexempel ?

Vilken typ av loop bör jag använda? For eller while?
Citera
2018-01-01, 13:14
  #4
Medlem
vtcs avatar
Citat:
Ursprungligen postat av Ketaminkillen1
Nu är det så att jag sitter och lär mig JavaScript, och jag skulle väl kunna påstå att jag kan grunderna åtminstone någorlunda.
Citat:
Ursprungligen postat av Ketaminkillen1
Skulle du kunna ge mig ett kodexempel ?

Vilken typ av loop bör jag använda? For eller while?
Kan du grunderna i språket så tror jag säkert att du klarar att skriva en for-loop på egen hand. Låt oss anta att du har satt upp en array fib och låter loopen stega över variabeln i, så vill du för varje iteration sätta
Kod:
fib[i] = fib[i-2] + fib[i-1]
I det här fallet tycker jag att en for-loop känns bäst lämpat, då du förutom ett lämpligt loop-villkor även vill sätta ett startvärde för i och öka dess värde med 1 efter varje iteration.

Anledningen till att jag inte ger dig en färdig kodsnutt är att du lär dig mycket mer av att komma fram till lösningen på egen hand
Citera
2018-01-01, 13:18
  #5
Medlem
Ketaminkillen1s avatar
Citat:
Ursprungligen postat av vtc
Kan du grunderna i språket så tror jag säkert att du klarar att skriva en for-loop på egen hand. Låt oss anta att du har satt upp en array fib och låter loopen stega över variabeln i, så vill du för varje iteration sätta
Kod:
fib[i] = fib[i-2] + fib[i-1]
I det här fallet tycker jag att en for-loop känns bäst lämpat, då du förutom ett lämpligt loop-villkor även vill sätta ett startvärde för i och öka dess värde med 1 efter varje iteration.

Anledningen till att jag inte ger dig en färdig kodsnutt är att du lär dig mycket mer av att komma fram till lösningen på egen hand

Tack för hjälpen! Ja precis, jag vill heller inte få svaret serverat, utan jag har liksom "fastnat" och behöver en spark i baken. Då vet jag i alla fall att jag är rätt ute, med en for-loop som ska göra något.

Jag ska sitta och pilla med detta ett tag och ge det en ärlig chans. Tack igen!
Citera
2018-01-01, 13:24
  #6
Medlem
vtcs avatar
Citat:
Ursprungligen postat av Ketaminkillen1
Tack för hjälpen! Ja precis, jag vill heller inte få svaret serverat, utan jag har liksom "fastnat" och behöver en spark i baken. Då vet jag i alla fall att jag är rätt ute, med en for-loop som ska göra något.

Jag ska sitta och pilla med detta ett tag och ge det en ärlig chans. Tack igen!
Det låter bra!

Börja med att definiera din array och stoppa in de två första värdena. Därefter loopar du som beskrivet ovan - tänk på att i inte börjar från 0 då du redan har ett par tal i arrayen.

Fråga igen om du kör fast eller skriv din lösning när du fått till det!
Citera
2018-01-01, 16:48
  #7
Medlem
Ketaminkillen1s avatar
Citat:
Ursprungligen postat av Trollfeeder
Iteration för fibonacci? Varför i hela världen...?

TS:

Tänk efter, vad består varje fibonacci-tal av? Börja göra några för hand. Alltså, hårdkoda beränkningen av säg, 10 fibonacci-tal. Det blir tjatigt efter en stund. Fundera på, ser du någon gemensam struktur i dessa tio beräkningar?

Tack! Ska sätta mig ner med papper och penna och rita lite efter jobbet.
Citera
2018-01-01, 17:33
  #8
Medlem
Om du kör fast så finns lösningen på nedanstående länk. (Ej skriven i Javascript men rätt tydlig vill jag påstå.)

Citera
2018-01-01, 17:52
  #9
Medlem
Kod:
function fib(){
    if(numbers.length < 2){
        numbers.push(1);
    }else{
        numbers.push( numbers.slice(-1)[0] + numbers.slice(-2)[0] );
    }
}

var numbers = [1];

for(i=0; i<30; i++){
	fib();
}

console.log(numbers);
Citera
2018-01-02, 08:37
  #10
Moderator
vhes avatar
Metadiskussionen om iteration vs. rekursion i implementation av fibonacci-funktioner utbruten till (FB) Fibonacci, rekursion eller inte.

/Moderator
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback