python 練習問題 練習コード

python

【Python】フィボナッチ数列の作り方【再帰的な方法の練習問題】

2019年6月22日

こんにちは。

 

今回は Python のうち関数に関する練習問題を行いたいと思います。

 

課題としては python を利用してフィボナッチ数列のコードを実装する内容となります。

フィボナッチ数列とは

  • 1番目の数は1
  • 2番目の数は1
  • 3番目以降の数値は「前の数値と前の前の数値の和」
» Wikioedia フィボナッチ数

 

以下が仕様になります。

 

 仕様

  • まず、フィボナッチ数列の関数を定義します。
  • 1番目、2番目の数は1にして、3番目以降の数は上記の様に「前の数値と、前の前の数値の和」とします。
  • while構文を使用して、また return を利用して再帰的な構文にしてください。
  • 「フィボナッチ数列のうち何番目の数値を表しますか」という入力を出来る様にしてください。
  • 入力した数値でフィボナッチ数列を計算する関数を実行してください。

ここで、「再帰的な関数」という言葉が出てきました。

再帰的な関数とは

再帰的な関数というのは、例えば fib_func(n) という関数が合った時に、return fib_func(n-1) という様に、その関数自体を用いて return に指定することを言います。

では早速コーディングしていきましょう。

 

コーディングできれば、以下の解説で確認してください。

実装の手順

python フィボナッチ数列 練習問題 練習コード 再帰法

関数を定義してwhile構文を用いて再帰的なコーディングを行います。

まず、フィボナッチ数列の関数を def fib_func(n): として定義します。

 

その次にwhile構文とif, elif, else を組み合わせてコーディングを行います。

In[]

ここで、while構文とif, elif, else の使い方について復習しましょう。

 

まずは、if, elif, else の違いに関する内容です。

 

if, elif, else の使い方は非常に頻用しますので、ここで一度上記のコードを確認しておいて下さい。

 

入力した値でフィボナッチ数列の値を計算する


あとは input を用いて「フィボナッチ数列のうち何番目の数値を表すか」という入力に対しての出力をさせるコーディングを行えば終了となります。

 

まとめ|pythonでフィボナッチ数列を作る

python フィボナッチ数列 練習問題 練習コード 再帰法

 

最終的な実装例としては以下の様になります。

解答例①

In[]

実行例は以下の様になります。

Out[]

 

解答例②

 

解答のポイント

  • while 文を使用しない場合
  • この場合、n==0 の考慮が必要となる

 

In[]

実行例は以下の様になります。

Out[]

今回はPythonで再帰的な方法を用いてフィボナッチ数列を作りましたが、その他にもフィボナッチ数列の求め方には色々な作成方法があります。

 

そのほかの方法についてもご自身で色々と試してみましょう。

 

今回は以上となります。

補足事項:読者の方から頂いたご質問

10が意味するのは、単にiに残った数字がループから抜けた後表示されているだけですね。  iの値は1,2,3,4,5,6,7,8,9,10と変化して、それぞれif文の処理がされています。  ループが終わるとiの値は最後の10を保持しています。それがprintされているだけですね。

Question

「1~10の素数を表示」を例にします。

 

上図が正解。

 

下の図が最後のインデントを削除した場合の結果です。

 

for文、if文からも外れることになるので、この10が意味するものはなにかがわかりません。

【Python】フィボナッチ数列の作り方

 

【Python】フィボナッチ数列の作り方

 

Answer

10 が意味するのは、単にiに残った数字がループから抜けた後表示されているだけですね。

 

i の値は 1,2,3,4,5,6,7,8,9,10 と変化して、それぞれif文の処理がされています。

 

ループが終わるとiの値は最後の10を保持しています。

 

それが print されているだけですね。


-python
-,

Copyright© Tommy blog  , 2020 All Rights Reserved.