6: 2015-08-27 (木) 00:09:58 osinko |
7: 2016-02-21 (日) 16:24:26 osinko |
| #jsmath | | #jsmath |
| | | |
| + | 帰納処理とはシンプルに言うと「初期値を与えられた漸化式」みたいなもの |
| + | プログラムの帰納関数であれ数学の漸化式であれ以下の性質を持つ |
| | | |
| + | -出発点、初期値の設定が必要 |
| + | -関数で考える場合、帰納処理する関数は出力と入力が同じになる。また関数内で自分自身を必ず呼ぶ事になる&br;(初期値を設定して初回に呼ぶコードと、自分自身を呼び続けループ処理するコードの2部分に分けて書く事になりやすい) |
| + | -関数の機能は自分自身を使って自分を定義する構造になる&br;従って&font(Red){生成される出力値、入力値は全て同じ「性質」を持つ事になる};&br;この「同一の性質」を利用して再帰関数の出力値とは別にクラスや構造体を作ったり、データー構造の制御が出来る |
| + | -再帰と帰納は方向が違う&br;「小さなものから大きなものへ」という方向に進むのが帰納&br;「大きいものから小さいものへ」という方向に進むのが再帰 |
| | | |
| + | このテクニックの大きな利点は |
| + | |
| + | -&font(Red){はじめに、どれぐらいの大きさになるのか予想が出来ないデーター構造を統一して扱える}; |
| + | -&font(Red){処理の深さを後から調節できる(まともにやると無限ループに陥るような処理を任意に途中で打ち切れる。あらかじめ深さを決めて置く事も出来る)}; |
| + | -&font(Red){粗いものから細かいものへと精度をあげて行くような計算が出来る}; |
| + | |
| + | AIや数学的解析、物事の判定、判断を行う際に、おそらく必ず必要になる |
| + | シンプルなアクションゲームでは必要ないがストラテジーやパズルゲームで必要になる |
| + | 「数学の漸化式」と「C#の帰納関数」は入出力が同一になるという点で非常に相性が良い |
| + | |
| + | #hr |
| | | |
| | | |