Enrich Human Knowledge

人類全体の知識向上を目指して

Chapter3 演習問題 フィボナッチ数列の第n項の計算プログラム

 まず、プログラムの全文を載せる。

# -*- coding: cp932 -*-
# fibonacci.py
#   フィボナッチ数列のn番目の項を計算する。
#   nが1, 2の時は自明なのでnは3以上とする。

def main():
    print "このプログラムはフィボナッチ数列の計算をします。"
    print
    n = input("計算したい項の番号(3以上)を入力して下さい: ")

    i, j = 1, 1  # i, jは以下でそれぞれ(n-1), (n-2)番目の項を表すと解釈せよ。

    for k in range(n-2):
        fibo = i + j # fiboはn番目の項を表す。
        i, j = j, fibo # 番号を一つづつずらす。

    print n, "番目のフィボナッチ数は", fibo, "です。"

main()


 以下、このプログラムを作成する時に学んだことを記す。

 

  1. コメントを日本語で書くことができる。ただしその場合にはプログラムの最初におまじないを記しておく必要がある。(意味は分からない。)
  2. コーディングは理論通りには進まない。教科書ではコーディングする時の流れをフェーズ分けしていたけれども、実際にコーディングする際には各フェーズがそれほどclear cutに現れるわけではない。また、アルゴリズムがある程度分かっても、それをpythonで実装する時には、結構なギャップがある。
  3. i, jという文字を定義しているが、最初にこのプログラムを書いた時には、その後のループ指数をくせでiとしてしまって、正しい答えが出てこなかった。ループ指数にも注目しなければ。