基礎プログラミングa 第8回 (11/14)
(Basic Programing)
0 はじめに
前回の要約
- エラーメッセージについて解説した
- REPLをインストールした
- 再帰を使った初歩的な数値計算の練習を行った
(前回は亀を使った描画は使わない日だった)
1 前回の積み残し
再帰を使った数値計算 の練習
- プログラムの大枠については前回の課題の説明を参照
- 1. ~ 4. は宿題とした。

5. 2つの整数 n, m の 最小公倍数を求める再帰的な関数

- 上左図のように、長方形から(短辺の長さを一辺とする)正方形を順々に取り去っていく図形操作と、意味は同じ。
- 細長い領域(小さい長方形)が残ったら、その長方形に対して(長辺と短辺を入換えて = 縦横入れ替えて)同じ処理を繰り返す。
- 最後に細長い領域が残らなければ、最後に使った正方形の辺長がGCM(求めるべき値)となる。

- 上右図に、n と m の最小公倍数(出発点で n > m として)を求める手順を例示した。
- 青い曲線で示した範囲が、それぞれの再帰呼出を表すと考えていい。
- プログラム例を右図に示す。
- 関数本体(ブレースの中)は1つの式とみなされるので、
この例ではブレース
{}
は省略可能。
- 再帰呼出の場合、
=
の前に、関数の返す値の型指定
(ここでは :
を挟んで Int という型指定)が必要。
- さらに補足説明
- REPLでの実施例
2 再帰の応用(つづき)
3 様々な描画テクニック
3.1 再帰の活用例

=>別ページに沿って実習をすすめて下さい。要点としては:
- 右上図のように Yの字を描く関数を作る。
- 解説ページでは y という関数名とし、
- 幹の長さを 引数 lenで与えることとしている。
- 幹を描いたあと、分岐した2本の枝を描くそれぞれの部分を、
関数yを呼び出して代用させる。
- yの中でyを呼ぶので再帰呼出になる、そのため、
- 再帰がちゃんと終了するよう、lenを小さくして渡すようにし、
- 引数として受け取ったlenの値が ある境界値以上のときに限定して中身を実行するよう ifで囲む。
サンプルプログラム集
3.2 複数のタートルを並行的に使う
=>別ページ
課題