0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

面接で出題されたフィボナッチ数列の問題が解けなかった話

Posted at

##執筆者に関して

  • 現在、未経験からエンジニアへのジョブチェンジを目指して、転職活動を実施しているkoheiです。

  • 先日の企業様との面接で出題された、「フィボナッチ関数」が解けず悔しすぎる思いをしたので、自分と同じ過ちを犯さないでほしいという思いで記事を執筆することにしました:joy:

##フィボナッチ数列とは
まずフィボナッチ数列とは、「2つ前の項と1つ前の項を足し合わせていくことでできる数列」のことです。

n番目のフィボナッチ数Fnは

F0 = 0
F1 = 1
Fn+2 = Fn + Fn+1(n>1)

で定義される。

実際に n = 0から計算すると

F0 = 0
F1 = 1
F2 = 1 = 0+1
F3 = 2 = 1+1
F4 = 3 = 1+2
F5 = 5 = 2+3
F6 = 8 = 3+5
F7 = 13 = 5+8
...

となり、計算結果を並べた数列

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

を**「フィボナッチ数列」** という

##問題(例)

自分の得意な言語で
0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,...
のようにn+2項が、n+1項とn項の和となるよう数列をプログラミングで書いてください。

##自分の回答

Rubyを使いました。

def fib(n)
  if n == 0
    n = 1
  else
    n + n
  end
end

p fib(0)
p fib(1)
p fib(2)
p fib(3)

# 出力結果
1
2
4
6

自分なりに頭を捻って考えていたのですが、時間内で回答できず、、、:sob:

そもそも0から出力できていないし、、、Rubyのアルゴリズムへの理解の薄さを痛感しました。

##正しい解き方

def fib(n)
  return 0 if n==0
  return 1 if n==1
  return fib(n - 2) + fib(n - 1)
end

出力結果

p fiv(0)
p fiv(1)
p fiv(2)
p fiv(3)
p fiv(4)
p fiv(5)
p fiv(6)
p fiv(7)
p fiv(8)
p fiv(9)

>
0
1
1
2
3
5
8
13
21
34

正しく出力されました:thumbsup:

##感想

意外と短く書けるものなのですね!

面接は5社目だったんですけど、こういったコーディングのテストが出題されたのは初めてでした。

悔しい思いをしないためにも、面接前は、面接の練習や企業分析だけでなく、こういった言語の文法を復習するといったことも大切だなぁと感じました:joy:

まだまだ、転職活動は続きそうなので、Cherry本などを使って文法の復習も実施していこうと思います!!

0
1
9

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?