【Scratch】再帰を使ったプログラム

再帰というのは、関数やメソッドから自分自身の関数やメソッドを呼び出すこと。Scratchだと、ブロック定義から同じブロック定義を呼び出す場合が再帰です

具体的には↓このようになります。ただし、このままだと、永遠にプログラムが終わらないので、何かしらの終了条件をつける必要があります

【Scratch】再帰を使ったプログラム

ねこを5歩動かすプログラムです。「(5)歩動かす」を使えばあっという間ですが、ここは再帰の説明なので、あえて回りくどい方法になっています

【Scratch】再帰を使ったプログラム

自分自身のブロックを呼び出す時の引数を1ずつ減らすことで、処理が無限に続かないようにしています

このプログラムがどのように実行されるのかを図にしたのがこちらです

【Scratch】再帰を使ったプログラム

自分自身のブロック定義を次々に呼び出して、指定した回数を呼び出したら、今度は呼び出し元にどんどんさかのぼって行きます

こちらは指定した値までの合計を計算する再帰です

【Scratch】再帰を使ったプログラム

コッホ曲線

再帰を使うと、面白い図形がいろいろと描けます。コッホ曲線もその1つ。よくみると同じような図形が何度も登場してるのがわかると思います

【Scratch】再帰を使ったプログラム

こちらがベースとなる図形

【Scratch】再帰を使ったプログラム

ペーズの図形に同じ図形が含まれた図形

【Scratch】再帰を使ったプログラム

さらに含まれた図形

【Scratch】再帰を使ったプログラム

さらにさらに含まれた図形。もうこれ以上再帰を深くしても線が汚くなるだけなので終わります

【Scratch】再帰を使ったプログラム

プログラムはこうなります

【Scratch】再帰を使ったプログラム

再帰を使えば、木のような図も描けます

【Scratch】再帰を使ったプログラム

再帰を深くするとメモリを大量に消費するので、ご利用はほどほどに!

Scratch 3.0に対応した書籍です[PR]

タイトルとURLをコピーしました