前提
フィボナッチ数列を用いてretutn文について学習しています。
下記のコードは、n番目の項の数字がprintされるもので、講師が書いたものです。
質問ですが、
なぜ4を入力すると3が出力されるのかが、わかりません。
nに4を入力した場合
fib(4 - 1) + fib(4 - 2)=fib(5)
そして、これを再帰処理し
fib(5 - 1) + fib(5 - 2)=fib(7)...
となるのが、私のreturn文に対する理解度での限界でした。
おそらく8行目の計算方法か、再帰処理の部分に間違いがあるのだと思います。
どのようなアルゴリズムで3という出力がなされるのかを教えていただきたいです。
とても初歩的な質問だとは思いますが、よろしくお願いします。
該当のソースコード
Python
1# n番目のフィボナッチ数を返す関数 2def fib(n): 3 # nが0または1の場合はそのまま返す 4 if n == 0 or n == 1: 5 return n 6 # nが2以上の場合は再帰的に計算する 7 else: 8 return fib(n - 1) + fib(n - 2) 9 10# 例: 10番目のフィボナッチ数を求める 11print(fib(4)) #実行すると3が出力されます
> 講師が書いたものです。
その講師の方には質問しなかったのですか?
