---
# System prepended metadata

title: Ruby經典面試題：Fibonacci數列
tags: [Ruby]

---

# Ruby經典面試題：Fibonacci數列
###### tags: `Ruby`

![](https://i.imgur.com/TFsmG2o.png)

聽說滿多初階工程師的面試會考這題，身為學code剛滿一個月的菜雞，也來玩玩看

## 什麼是Fibonacci(費氏)數列
根據維基百科定義，在數學上，費波那契數是以遞迴的方法來定義：
```
F0 = 0
F1 = 1
Fn = Fn-1 + Fn-2
```
用文字來說，就是費氏數列由0和1開始，之後的費波那契數就是由之前的兩數相加而得出。首幾個費波那契數是：

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, ...
***

## 如何用程式語言重現Fibonacci(費氏)數列
(思考過程較冗長，請斟酌收看)
觀察完數列的規律後，我決定用Array來解題
其實維基百科已經透露部分的答案給我了，也就是在陣列一開始一定會有[0, 1]這兩個數字
那麼我就設一個
```
fib = [0, 1]
```

第三個數字就會是**第二個數字**跟**第一個數字**的和
```
fib[2] = fib[1]+fib[0]
```
也就是說第N個數字會是前兩個數字的和
接著寫出這個規律
```
fib[n] = fib[n-1]+fib[n-2]
```
但因為這個陣列只能從第三個數字開始玩起，所以我稍微修改一下表達規律
```
fib[n+2] = fib[n+1]+fib[n]
```


這時候就可以寫個方法來表達這個規律，程式可能會變成這樣
```ruby

#讓使用者隨便新增一個整數
puts "請輸入數字(要大於三)"
@type_in = gets.chomp.to_i

#設一個方法讓陣列每次多一個數字

def circle(n)
  fib = [0, 1]
  if n < 3
    puts "請輸入大於3的整數"
  else
    for i in 0..n
      fib[i+2] = fib[i+1]+fib[i]
      i += 1
    end
  end
  p fib
end

circle(@type_in)
```




![](https://i.imgur.com/GCtMepu.png)
看到標題的那張圖，不禁讓我聯想到這張蒙德里安的作品。

繼續努力:)
