Enrich Human Knowledge

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

section3

 

Python Programming: An Introduction to Computer Science

Python Programming: An Introduction to Computer Science

 

 

3.3 Accumulating Results: Factorial

 

 階乗(factorial)の計算をするプログラムを作る。

 

 筆算をしてみて、自分がどうやって階乗を計算しているのかを観察する。結果:掛け算を繰り返し行い、同時にその結果を保持しておく。

 

 このようなパターンのアルゴリズムはアキュムレータ(accumulator)と呼ばれる。実際のプログラムでアキュムレータを実行するためには、アキュムレータ変数とループ構造を用いる。一般的な形は

 

 アキュムレータ変数を初期化

 最後の結果に到達するまでループを繰り返す

 ループの中身:アキュムレータ変数を更新する

 

となる。この形式を用いて6の階乗を計算するプログラムを作成する。忘れがちなポイントはアキュムレータ変数を初期化するというところである。これをしておかないと、プログラムは正しい答えを返してくれない。

 

 今作成したプログラムは6の階乗を計算してくれるだけで、一般にnの階乗を計算することはできない。

 

 これはpythonのrange関数を用いることで解決できる。

 

 rangeの使い方(形式と意味):

 range(n)→0からn-1までのリストを作成。

 range(start, n)→startの値からn-1までのリストを作成。

 range(start, n, step)→startの値からstepづつ増加するn-1までの数列によるリスト。stepは負数でも良い。この場合減少する数列によるリストとなる。

 

 range関数を用いて階乗を計算する方法は幾つもある。(増加数列によるリストや、減少数列によるリストなど。どちらもOK。)

 

 factorial.pyの作成。