データ構造とアルゴリズム論 第8章 再帰処理 平成15年12月2日 森田 彦.

Slides:



Advertisements
Similar presentations
プログラミング 平成24年1月11日 森田 彦.
Advertisements

プログラミング 平成25年10月29日 森田 彦.
プログラミング 平成22年10月20日 森田 彦.
プログラミング 平成24年10月16日 森田 彦.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
プログラミング 平成25年12月3日 森田 彦.
プログラミング 平成25年11月19日 森田 彦.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
データ構造とアルゴリズム論 第5章 レコード構造を使った処理-クラスの利用
プログラミング 平成24年10月23日 森田 彦.
プログラミング 平成23年10月19日 森田 彦.
CGプログラミング論 平成28年6月1日 森田 彦.
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
データ構造とアルゴリズム論 第9章 木構造 平成16年12月21日 森田 彦.
情報数理Ⅱ 平成27年9月30日 森田 彦.
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
CGプログラミング論 平成28年4月27日 森田 彦.
データ構造とアルゴリズム論 第2章 配列(構造)を使った処理
プログラミング 平成25年12月10日 森田 彦.
ネットワークプログラミング論 平成28年12月12日 森田 彦.
プログラミング 平成24年10月30日 森田 彦.
プログラミング 平成23年10月5日 森田 彦.
データ構造とアルゴリズム論 第7章 探索のアルゴリズム
データ構造とアルゴリズム論 第9章 木構造 平成17年12月20日 森田 彦.
データ構造とアルゴリズム論 第2回目テスト 平成15年12月9日 森田 彦.
プログラミング 平成25年11月5日 森田 彦.
ネットワークプログラミング論 平成28年12月26日 森田 彦.
CGプログラミング論 平成28年6月8日 森田 彦.
CGプログラミング論 平成28年4月20日 森田 彦.
プログラミング 平成22年11月24日 森田 彦.
プログラミング 平成23年12月21日 森田 彦.
ネットワークプログラミング論 平成28年11月7日 森田 彦.
ネットワークプログラミング論 平成28年10月31日 森田 彦.
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
データ構造とアルゴリズム論 第3章 ファイルを用いたデータ入出力2
データ構造とアルゴリズム論 第3章 ファイルを用いたデータ入出力
データ構造とアルゴリズム論 終章 専門科目におけるプログラミング
データ構造とアルゴリズム論 第7章 再帰処理 平成17年12月6日 森田 彦.
データ構造とアルゴリズム論 第6章 整列(ソート)のアルゴリズム
データ構造とアルゴリズム論 第1章 アルゴリズムの表現-流れ図
プログラミングⅠ 平成30年10月29日 森田 彦.
ネットワークプログラミング論 平成28年12月19日 森田 彦.
データ構造とアルゴリズム論 第9章 木構造 平成29年12月20日 森田 彦.
データ構造とアルゴリズム論 第9章 木構造 平成30年6月27日 森田 彦.
データ構造とアルゴリズム論 第2回目テスト 平成16年12月14日 森田 彦.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
プログラミングⅠ 平成30年10月15日 森田 彦.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
プログラミングⅠ 平成30年10月22日 森田 彦.
プログラミングⅠ 平成31年1月7日 森田 彦.
プログラミング 平成22年12月15日 森田 彦.
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
プログラミング 平成24年11月13日 森田 彦.
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
データ構造とアルゴリズム論 第7章 再帰処理 平成16年11月30日 森田 彦.
プログラミング 平成24年10月9日 森田 彦.
CGプログラミング論 平成28年7月6日 森田 彦.
情報数理Ⅱ 平成28年9月21日 森田 彦.
データ構造とアルゴリズム論 第9章 連結リスト
CGプログラミング論 平成28年6月29日 森田 彦.
プログラミング 平成24年12月11日 森田 彦.
関数と再帰 教科書13章 電子1(木曜クラス) 2005/06/22(Thu.).
第10回 関数と再帰.
プログラミング 平成28年10月25日 森田 彦.
CGプログラミング論 平成28年5月11日 森田 彦.
プログラミング 平成28年10月18日 森田 彦.
Presentation transcript:

データ構造とアルゴリズム論 第8章 再帰処理 平成15年12月2日 森田 彦

基礎課題提出状況(11/25) 平均提出数=36.8 (全課題数41) このままでは危険! 66.7%が36題以上を提出

応用課題提出状況(11/25) 平均提出課題数=8.7 13題以上提出は約27%

再帰とは? 自身の定義(の一部)に自身を含むこと。 日常的な例 鏡を持って鏡に向かった場合→鏡の中に鏡が映る・・・鏡の列が続く  鏡を持って鏡に向かった場合→鏡の中に鏡が映る・・・鏡の列が続く プログラムの世界では  メソッドの再帰的呼び出し、あるいはデータ構造の再帰的定義に用いられる。

本章(本日)の学習のねらい メソッドの再帰的定義(呼び出し)の例を学習する。→“再帰”の概念を理解する。 再帰処理の応用例としてフラクタル図形の描画を学習する。

8-1 再帰処理 例:階乗の計算 5!=5×4×3×2×1 一般的には・・・ n!=n×(n-1)×(n-2)×・・・×2×1 8-1 再帰処理 例:階乗の計算  5!=5×4×3×2×1   一般的には・・・  n!=n×(n-1)×(n-2)×・・・×2×1   これを書き直すと・・・  n!=n×(n-1)!   → 再帰的定義 プログラムで表現するためにn!を計算するメソッドFact(n)を定義 階乗:factorial → Fact(n)=n×Fact(n-1)

n!の計算(関数の再帰的定義による) 終了条件が必要! 関数呼び出しの連鎖→p.126参照 プログラムの作成→【基礎課題8-1 】 Fact(n) n≧2 X ←n*Fact(n-1) Xの値を返す 戻る X ←1 No Yes 開始 nの入力 Ans ←Fact(n) Ansの表示 終了 メソッドの呼び出し 値を返す 終了条件が必要! 関数呼び出しの連鎖→p.126参照 プログラムの作成→【基礎課題8-1 】

【基礎課題8-2】-コラッツの予想 コラッツ(Collatz)の予想 ある数字が偶数なら2で割る 奇数なら3倍して1を加える という操作を繰り返すと必ず1になる。 例:5→16→8→4→2→1 <課題の内容>  コラッツの操作を再帰的に繰り返すことで、上の予想を実際に確かめるプログラムを作成する。

8-2 再帰処理の応用 フラクタル図形 どの一部をとっても全体と同じパターン(形)になっている図形 8-2 再帰処理の応用 フラクタル図形  どの一部をとっても全体と同じパターン(形)になっている図形 コッホ(Koch)曲線→【応用課題8-A】 植物(!?) → 【応用課題8-B】

第2回目テストのアナウンス 日時:12/9 13:15~14:15 (13:10までに着席しておいて下さい) 日時:12/9 13:15~14:15 (13:10までに着席しておいて下さい) 実施形態:ペーパーテスト形式(テスト中はPCを使用できません) 参照等:テキスト、プリント、自作ノート参照可 出題範囲:第5章~第7章まで アドバイス:暗記ではなく、処理の流れを“理解する”事に重点を置いて下さい。

テスト準備のポイント 問題1 レコード構造-クラスの利用 問題1 レコード構造-クラスの利用   クラスの定義・利用の仕方をよく理解しておくこと→【基礎課題5-1】、【基礎課題5-2】を(暗記ではなく)を自分の頭で作成できるようにしておいて下さい。 問題2 ソートのアルゴリズム   バブルソート、選択ソート、挿入ソートの処理の流れをトレースしておくこと→p.88~89、p.96~97、p.100~101を(自分で手を動かして)良く確認しておいて下さい。

テスト準備のポイント 問題3 探索のアルゴリズム 問題3 探索のアルゴリズム   線形探索(番兵法)と2分探索のアルゴリズム(流れ図)をよく理解しておくこと(p.107,p.108~109,p.115)→具体的なデータを用いて、処理の流れをトレースしておいて下さい。 1両日中にHPにより詳細な情報を掲載します。参考にして下さい。

鏡の中の鏡 ずっと際限なく鏡の列が続く。 「鏡に映す」という操作の再帰的呼び出しの例