# 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) 看到標題的那張圖,不禁讓我聯想到這張蒙德里安的作品。 繼續努力:)