以下の解説では後者に沿って行う。
forward(100)
back(100)
幹 | forward(100) | |
分岐 | right(20) | |
枝1 | (進んで、戻る) | |
別方向へ | left(40) | |
枝2 | (進んで、戻る) | |
元の方向を向く | right(20) | |
戻る | back(100) |
自分自身を2回(別の角度で)呼び出す。
def y(len: Double) {
if (len > 30) {
forward(len)
left(10)
y(len * 0.9)
right(20)
y(len * 0.9)
left(10)
back(len)
}
}
clear; y(100)
(たとえばこんな感じのコードになるだろう)
(ここまでの方法では、円の中に円が描かれることになる)
第2引数を設ける(例えば plusminus:Int のような)。 再帰呼び出しのときには -plusminus を渡す。最初の呼び出し時は 1 でいい。
leftの呼び出し時の引数に plusminus を乗算して渡す
(と、円を描く回転方向が呼び出しレベル毎に反転する)。
プログラム例