section3
Python Programming: An Introduction to Computer Science
- 作者: John M. Zelle
- 出版社/メーカー: Franklin Beedle & Assoc
- 発売日: 2003/12
- メディア: ペーパーバック
- 購入: 1人 クリック: 4回
- この商品を含むブログ (5件) を見る
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の作成。