質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

7781閲覧

Python while文を使ったフィボナッチ数列の実装コード

SuzuAya

総合スコア71

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/04/06 06:32

編集2019/04/06 06:34

前提・実現したいこと

Pythonチュートリアルに出てきたコードが理解できず困っています。
python勉強歴半年の文系初心者プログラマーです。

発生している問題・エラーメッセージ

フィボナッチ数列の概要は理解しているのですが、このコードでどうして実装できているのかがよく分かりません。

該当のソースコード

a, b = 0, 1
while b < 1000:

... print(b, end=',')
... a, b = b, a+b
...
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

python

1a, b = 0, 1 2while b < 1000: 3 print(b, end=',') 4 a, b = b, a+b

フィボナッチ数列を {x_i} としたとき、変数 a を x_i、変数 b を x_{i + 1} の
値を格納するのに使用しています。

なので、

x_0 = 0, x_1 = 1

1ループ目
x_1 を出力
x_2, x_3 = x_1, x_1 + x_2

2ループ目
x_2 を出力
x_3, x_4 = x_2, x_2 + x_3

3ループ目
x_3 を出力
x_4, x_5 = x_3, x_3 + x_4

以下同様

以上の仕組みで n ループ目で x_n の値が表示されるので、フィボナッチ数列を出力できたことになります。

ちなみにタプルをタプルに代入する場合 (a, b = b, a+b)
a = b してから b = a + b が行われるのではなく、両方同時に行われることに注意してください。

a = 2 b = 1 a, b = b, a + b print(a, b) # 1 3

投稿2019/04/06 06:54

編集2019/04/06 07:09
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SuzuAya

2019/04/06 12:28

ご丁寧にありがとうございました! 何となくイメージがつかめました。とても助かりました。
tiitoi

2019/04/06 20:55

不明な点があれば、補足しますのでコメントください。 解決済みであれば、お手数ですが質問は Close してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問