データ構造とアルゴリズム論 第7章 再帰処理 平成17年12月6日 森田 彦 基礎課題提出状況(11/29) 基礎課題提出状況(11/29) 平均=33.3(昨年32.7) [全課題37題] 90 54 % が 全 課 '04年度 '05年度 題 を 提 出 80 70 度数(人数) 60 50 40 30 17名(12.5%) このままでは危険! 20 10 0 6~20 21~25 昨年とほぼ同じペース 26~30 提出数 31~35 36~37 58.8%が36題以上を提出 応用課題提出状況(11/29) 度数(人数) 応用課題提出状況(11/29) 平均13.93(昨年13.5) 全課題25題 全 課 題 提 '04年度 出 '05年度 は 5 名 50 45 40 35 30 25 20 15 10 5 0 0 1~5 6~10 11~15 16~20 21~25 提出数 昨年より若干多い! 13題以上提出は約61% 再帰とは? 自身の定義(の一部)に自身を含むこと。 日常的な例 鏡を持って鏡に向かった場合→鏡の中に 鏡が映る・・・鏡の列が続く プログラムの世界では メソッドの再帰的呼び出し、あるいはデー タ構造の再帰的定義に用いられる。 本章(本日)の学習のねらい ① メソッドの再帰的定義(呼び出し)の例を 学習する。→“再帰”の概念を理解する。 ② 再帰処理の応用例としてフラクタル図形 の描画を学習する。 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) 今後の予定 12/6 第7章 再帰処理 12/13 第8章 連結リスト 12/20 第9章 木構造 12/27 第2回目テスト(13:15~14:15) ★範囲は第9章まで ★実施要領は第1回目と同様 ★プリントをどれだけじっくり読んで理解 しているかがポイント 1/10 終章 補足 & 課題最終チェック 欠席回数が3回以上の人は出席率に注意して下さい。 鏡の中の鏡 ずっと際限なく鏡 の列が続く。 「鏡に映す」という 操作の再帰的呼 び出しの例
© Copyright 2024 ExpyDoc