授業で資料を配布するとき、以下のやり方はよく使用されています。「自分の資料を取って、資料の残りを後の方に渡しください。」という指示によって、資料を一番前にいる生徒に渡すれば、資料が全員に届けます。この例では、以下特徴があります。「資料を取って、残りを後ろの方に渡す」という作業(関数と考える)が繰り返し行われます。授業の教員として、最初に一回の作業(関数の実行)で済みです。作業の終了条件として、「資料がなくなる」こと、または、「資料を受けった生徒の後に他の生徒がいないこと」です。再帰的な計算の例¶$n$の階乗の計算F(n)を考えます。$n$の階乗は$n$と$n-1$の階乗の積であるので、以下の再帰的な計算によって、$n$の階乗を算出することができます。720上記の階乗の例では、F(n)はF自身を呼び出し、F(n-1)の値を取ってから、F(n-1)とnの積を返します。コードはシンプルであるという特徴があります。1からnまでの各整数の平方の和を計算するS(n)を作ってください。curve)の例を再検討します。Draw_Koch)を定義します。与えられる線分について、3等分を取って、真ん中の線分を「山」にして、合わせて4つの線分を作成する。各線分に対して、Draw_Kochを呼び出し、引数としてこの関数に渡す。残り回数が$0$になれば、(3等分の作業をしないまま)線分を描画して、終了します。endend線分を用意して、関数をdraw_kochを呼び出します。注意:draw_kochの中の最大深さNを大きい値にすると、計算時間が長くなります。与えられる線分を3等分を取ります。3等分の節点を順番にp1,p2,p3,p4として、p2とp3のところで、線分との角が30度となる「枝」を線分の両側で作成する。残りの再帰的計算の回数$n$が0になるとき、関数に与えられる線分を描きます。上記の2つの例にある「残りの再帰的計算の回数n」の役割を理解してください。$n>0$の時、グラフの描画をしなく、与えられる線分の再分割を行います。各新しい線分に対して、関数自身を呼びます。$n=0$の時、線分の処理をしなく、線分を描画します。レポート課題¶フラクタルを自分で設計して、作成してください。既知のフラクタルの例でもよいです。Sausageのフラクタルを再帰的な計算で作成しても良いです。Kohn曲線とツリーは不可です。Kohn曲線またはツリーを大幅に改造したものはO.K.です。(再分割の割合や、回転の角度など)ヒント:Googleの画像検索の中で「フラクタル」の例を参考してください。