【教育版マインクラフト】3-9 再帰関数を使ってブロックを置く
![デフォルトアイキャッチ](https://tsukurium.net/wp-content/uploads/2023/03/tsukurium_eyec320.jpg)
再帰関数とは
再帰関数は関数の中でその関数の終了条件が指定され、また終了条件ではない時にはその関数自体を呼び出すものです。イメージとしては箱の中に箱が入るマトリョーシカのようなもので、関数の処理が終わった時にその関数を呼び出した場所に戻って処理が続きます(再び帰ってくるので再帰というわけです)。複雑な処理のため現在の変数の値が把握しにくくなるので一つ一つの処理を丁寧に追うことで理解を進めてください。
現実的にマインクラフトの中で再帰関数を駆使するということはあまり多くないと思います(そのレベルになったらマインクラフトは卒業かと思いますので)。軽く触ってみてこういうものがあるのだなと経験する程度でよいかと思います。
再帰関数の例 階乗1
再帰関数の例としては一般的に階乗を計算するプログラムが使われますのでまずはそれを紹介します。
![再帰関数の例 階乗1](https://tsukurium.net/wp-content/uploads/2024/07/image-8.png)
階乗の例2
書き方は一つではありません。できるだけ自分で書いてみましょう。
![再帰関数の例 階乗2](https://tsukurium.net/wp-content/uploads/2024/07/image-9.png)
再帰関数を使ってピラミッドを作る
数値計算だけでは面白みが足りないかと思います。そこでマインクラフトらしくブロックを積むことで再帰関数を使ってみたいと思います。現実的にピラミッドを作る場合は以前に紹介したようにオーソドックスにループ処理で作ると良いと思います。逆に言えば、最初のうちは再帰とはループ処理の変形と考えてもよいでしょう(もちろん厳密にはいくつか違う部分がありますが)。
![再帰関数を使ってピラミッドを作る](https://tsukurium.net/wp-content/uploads/2024/07/image-11.jpg)
例(チャットコマンド)
チャットコマンドを使った再帰的処理の例としては以下の通りです。
![チャットコマンドを使った再帰的処理](https://tsukurium.net/wp-content/uploads/2024/07/image-11-1024x672.png)
注意:失敗する例
ただし注意が必要です。このようにチャットコマンドで再帰的処理をするとイベントブロックに複数呼び出す命令があると動作がおかしくなるようです。
![チャットコマンドを使った再帰的処理での失敗例(複数回の呼び出しに注意)](https://tsukurium.net/wp-content/uploads/2024/07/image-12.png)
関数の使用例
関数化するとこうした不具合は避けることができるようです。
![関数を使った再帰的処理(ピラミッドを作る)](https://tsukurium.net/wp-content/uploads/2024/07/image-13-1024x633.png)
おもしろい失敗(再帰終了条件をしなかったもの)
以下の例は終了条件を指定し忘れてしまったものです。偶然できた失敗例ですが、ピラミッドの上にさらに処理が続きクラインの壺のような形のブロックを作り続けますので紹介します。なおこのコードは無限ループの状態ですので処理を止めるにはCキーを押してコードエディタの画面に戻りましょう。
![面白い再帰処理の失敗(逆ピラミッドのコード)](https://tsukurium.net/wp-content/uploads/2024/07/image-14.png)
![面白い再帰処理の失敗(逆ピラミッド)](https://tsukurium.net/wp-content/uploads/2024/07/image-15.jpg)
コース・WEB講座
目次へ戻る
教育版マインクラフト・プログラミング入門
マインクラフトコースについてはこちら
https://tsukurium.net/kitaurawa-minecraft-club/
体験会開催中です。
当教室では教育版マインクラフトコース開講中です。
先生のお話がしっかり聞くことができ、ルールを守れる人なら年長さんからでも入会可能です。
また当教室のマインクラフトコースはよくあるような既存の学びに対するカウンターカルチャーや逃避の場を志向するものではなく、教育版マインクラフトの特徴を活かしつつ高校の情報Ⅰや大学入試などメインストリームのしっかりとした学びにつながるものを志向するものです。
お問いあわせ・ご入会・体験会のお申込みは下記のリンクからお願いいたします。
画像をクリックするとお問い合わせページにジャンプします。