再帰とカントール集合ツイートシェアはてブLINEPocket目次フラクタルとはフラクタルは1975年にブノワ・マンデルブロによって提唱された幾何学の概念です。マンデルブロの有名な著書「フラクタル幾何学」では、フラクタルは「複数の部分に分割可能な断片化された大まかな幾何学形状で、それぞれが全体を縮小した複製である」と定義されています。知られているフラクタルパターンの1つがマンデルブロ自身の名前をとった「マンデルブロ集合」だと思います。この記事のアイキャッチ画像がそのマンデルブロ集合です。じ規則を繰り返し繰り返し適用することによって、連続的な結果が得られることを「再帰」と呼びます。下記のコードのように自身を呼び出す関数は「再帰関数」と呼ばれ、特定の問題を解決するのに役立ちます。整数nの階乗は次のように定義されます。(1)forループを使って階乗を計算するプログラムを書くと、次のようになります。f;}この計算を再帰関数で表現することはできないでしょうか?ここでもう一度(1)式を見てみましょう。(1)式は次のように式変形していくことができます。(2)つまり、nの階乗はnにn-1の階乗を掛けたものということです。1を引いて階乗を計算する関数を再帰的に呼び出せば良いので、階乗を計算する再帰関数は次のようになります。forループを使わずにシンプルに表現できます。factorial(n-1);}}カントール集合カントール集合は図形としての面白みはありませんが、フラクタルの入門としては良い例です。「線を3等分して中央を取り除く」という操作を無限回繰り返して得られる集合をカントール集合といいます。具体的には、下記の処理を繰り返していきます。線を描く線を3等分して中央を取り除く残った線に対してもそれぞれ2の処理をする先ほど紹介した再帰関数を使ってProcessingでカントール集合を表現してみます。次にコードとその実行結果を示します。線の色は何となくランダムにしてみました。len/3);}}<実行結果>まとめ今回の記事では、再帰関数とフラクタルの入門としてカントール集合を紹介しました。コメントをキャンセルメールアドレスが公開されることはありません。PHP!"を表示してみよう!プレーリードッグに会いに行こう!RECOMMENDこちらの記事も人気です。補足プロフィールITエンジニア。プログラミングについて記事を書いていきます。ネットショップ運営、プロップトレーダーなどもやっています。