スライド

Download Report

Transcript スライド

データ構造とアルゴリズム論
第7章 再帰処理
平成16年11月30日
森田 彦
基礎課題提出状況(11/16)
平均提出数=32.7 (全課題数37)
基礎課題提出状況(11/16) 平均=32.7
56
%
が
全
課
題
を
提
出
90
80
度数(人数)
70
60
50
40
21名(15.6%)
このままでは危険!
30
20
10
0
6~20
21~25
26~30
31~35
36~37
提出課題数
62.2%が36題以上を提出
応用課題提出状況(11/16)
平均提出課題数=13.5 / 25
応用課題提出状況(11/16) 平均=13.5/25
全
課
題
提
出
は
3
名
50
45
40
度数(人数)
35
30
25
20
15
10
5
0
0
1~5
6~10
11~15
16~20
提出数
13題以上提出は約63%
20~25
再帰とは?
 自身の定義(の一部)に自身を含むこと。
 日常的な例
鏡を持って鏡に向かった場合→鏡の中に
鏡が映る・・・鏡の列が続く
 プログラムの世界では
メソッドの再帰的呼び出し、あるいはデー
タ構造の再帰的定義に用いられる。
本章(本日)の学習のねらい
① メソッドの再帰的定義(呼び出し)の例を
学習する。→“再帰”の概念を理解する。
② 再帰処理の応用例としてフラクタル図形
の描画を学習する。
7-1 再帰処理
例:階乗の計算
5!=5×4×3×2×1
一般的には・・・
n!=n×(n-1)×(n-2)×・・・×2×1
これを書き直すと・・・
n!=n×(n-1)!
→ 再帰的定義
プログラムで表現するためにn!を
計算するメソッドFact(n)を定義
→ Fact(n)=n×Fact(n-1)
階乗:factorial
n!の計算(メソッドの再帰的定義による)
Fact(n)
開始
nの入力
メソッドの呼び出
し
Ans ←Fact(n)
Ansの表示
終了
値を返す
n≧2
No
Yes
X ←n*Fact(n-1)
X ←1
Xの値を返す
戻る
終了条件が必
要!
メソッド呼び出しの連鎖→p.112参照
プログラムの作成→【基礎課題7-1 】(p.113)
【基礎課題7-2】-コラッツの予想
コラッツ(Collatz)の予想
ある数字が偶数なら2で割る
奇数なら3倍して1を加える
という操作を繰り返すと必ず1になる。
例:5→16→8→4→2→1
<課題の内容>
コラッツの操作を再帰的に繰り返すことで、上の
予想を実際に確かめるプログラムを作成する。
7-2 再帰処理の応用
フラクタル図形
どの一部をとっても全体と同じパターン(形)に
なっている図形
コッホ(Koch)曲線→【応用課題7-A】
(p.119)
植物(!?) → 【応用課題7-B】(p.123)
今後の予定
 11/30 第7章 再帰処理
 12/7 第8章 連結リスト
 12/14 第2回目テスト(13:15~14:15)
★範囲は8章まで
★実施要領は第1回目と同様
 12/21 第9章 木構造(応用課題のみ)
 1/11 今後の(プログラミング関連)学習ガ
イダンス & 課題チェック
基礎課題未了で途中退出した学生は早退とみまします。
鏡の中の鏡
ずっと際限なく鏡
の列が続く。
「鏡に映す」という
操作の再帰的呼
び出しの例