#3の総和の処理の仕方で再帰関数は処理が遅くなることを指摘しました。
今回はこの処理時間とメモリ使用量に着目して、再帰関数とループ処理でどのように変わるか分析します。
階乗とは?ウィキペディアを引用しました。
数学の高校一年で習います。
1からnまで掛けた値です。
コード今回使用するコード全文はこちら。
主に階乗を求める関数、メモリ使用量を計測する関数、計測用の処理はメイン作成しました。
結果はリストに格納し、グラフで描画します。
import time as timp
1〜nまでの総和の求め方は高校でシグマ計算で習います。
$$
\sum k = \frac{1}{2} n(n+1)
$$
ですが、プログラムで求める場合は、基本的に順に足していけば良いです。
しかし、たかが総和ですが、さまざまな求め方があり、それによって処理速度が変わってくるのを確かめようと思います。
今回は総和を求める関数を8種類用意します。
def sum1(n): return n*(n+1)/2def sum2(n): total = 0 for i in