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

聽說滿多初階工程師的面試會考這題,身為學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)
```

看到標題的那張圖,不禁讓我聯想到這張蒙德里安的作品。
繼續努力:)