ChatGPTにできるだけ高速にフィボナッチ数列を求めるコードを書いてもらった

ChatGPTにできるだけ高速にフィボナッチ数列を求めるコードを書いてもらいました。

これはよくプログラミングとかアルゴリズムの例題として取り上げられるテーマです。

 

ChatGPTへの指示文:

Pythonフィボナッチ数列を求めるプログラムを書いてください。できるだけ高速に求められるようにしてください。計算の開始から終了までにかかった時間も合わせて表示するようにしてください。

回答:

以下はPythonフィボナッチ数列を求めるプログラムです。このプログラムでは、フィボナッチ数列再帰的に計算する代わりに、前の2つの数を保存し、それらを使用して新しいフィボナッチ数を計算する方法を採用しています。これにより、プログラムの実行速度が大幅に向上します。


import time

def fibonacci(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        fib = [0, 1]
        for i in range(2, n+1):
            fib.append(fib[i-1] + fib[i-2])
        return fib[n]

start_time = time.time()
n = 50 # 計算するフィボナッチ数の位置
result = fibonacci(n)
end_time = time.time()

print(f"The {n}th Fibonacci number is: {result}")
print(f"Calculation time: {end_time - start_time} seconds")
    
実行結果:

下記のように実行して成功しました。


どのくらい速いのか、フィボナッチ数列を求める定義をそのままコードにしてみたものとの実行速度と比較してみました。

n = 38 を求めてみましたが、定義そのままだと10.05秒、高速版だと0.000117秒と、比較にならないほど速いですね。