{{announcement.body}}
{{announcement.title}}

# Day 13 of 30 Ruby Coding Challenge - Fibonacci Sequence in Ruby

DZone 's Guide to

# Day 13 of 30 Ruby Coding Challenge - Fibonacci Sequence in Ruby

### Day 13 of 30. We're going to solve the famous Fibonacci sequence in Ruby. The next videos are going to be all about getting the algorithm better

· Web Dev Zone ·
Free Resource

Comment (0)

Save
{{ articles.views | formatCount}} Views

Hey friends!

This is the blog post version of the Youtube video from the 30 Ruby Coding Challenges in 30 Days series

## Fancy Fibonacci Algorithm Definition

• To get the next number in a sequence, you have to sum the previous two numbers.

One important point: The Fibonacci sequence already starts with 0 and 1 as the first 2 numbers

Plain Text

x

1
`0 1 1 2 3 5 8 13 21 34 55 88 ...`

Perfect. Now we want to solve the following puzzle:

We want to calculate the first N numbers in a Fibonacci sequence

First Real Example:

I want to calculate the first 8 numbers in a Fibonacci sequence:

Plain Text

`xxxxxxxxxx`
1

1
`0 1 1 2 3 5 8 13`

Second Real Example:

I want to calculate the first 10 numbers in a Fibonacci sequence:

Plain Text

`xxxxxxxxxx`
1

1
`0 1 1 2 3 5 8 13 21 34`

I’m pretty sure you got it : )

## Fibonacci Algorithm in Ruby

Step 1

• let’s create the fibonacci() method
• then we’ll start the sequence with 0 and 1
Ruby

`xxxxxxxxxx`
1

1
`def fibonacci(count)`
2
`  n1 = 0`
3
`  n2 = 1`
4
`  sequence = [n1, n2]`
5
`end`
6

7
`puts fibonacci(8)`

Step 2

• because the list starts with 2 numbers, we can calculate the next one using a while loop
Ruby

`xxxxxxxxxx`
1
12

1
`def fibonacci(count)`
2
`  n1 = 0`
3
`  n2 = 1`
4
`  sequence = [n1, n2]`
5
`  while count > 2 # just a while loop expression that decrements the argument count`
6
`    count = count - 1`
7
`  end`
8
`  return sequence`
9
`end`
10

11
`puts fibonacci(8)`
12
`# 0 1 1 2 3 5 8 13`

Step 3

• the next number is the sum of the previous 2 numbers
Ruby

`xxxxxxxxxx`
1
19

1
`def fibonacci(count)`
2
`  n1 = 0`
3
`  n2 = 1`
4
`  sequence = [n1, n2]`
5
`  while count > 2`
6
`        # sum of the previous 2 numbers`
7
`    n3 = n1 + n2`
8
`    sequence.push(n3)`
9
10
`      # assigning the new numbers to calculate the next number in the sequence`
11
`    n1 = n2`
12
`    n2 = n3`
13
`    count = count - 1`
14
`  end`
15
`  return sequence`
16
`end`
17
18
`puts fibonacci(8)`
19
`# 0 1 1 2 3 5 8 13`

Pretty simple, isn’t it?

Although the code is simple, it’s far from a good code design because:

• it has too many local variables

To be honest, sometimes (and even most of the time), a good code design is a matter of context and personal taste, and maybe you might think that this code is already good enough, and I don’t blame you. However, I’ll solve the same problem using a different approach that probably you might like better

Hope to see you in the next Ruby Coding Challenge : )

Don’t forget to come by and say hi Alex

Topics:
algorithm, algorithm analysis, coding, coding basics, fibonacci numbers, programming, ruby, tutorial for beginners

Comment (0)

Save
{{ articles.views | formatCount}} Views

Published at DZone with permission of Alexandre Gama . See the original article here.

Opinions expressed by DZone contributors are their own.