ハノイの塔 日の出ITスクール

ハノイの塔 日の出ITスクール Photo by Mohit Gupta on Unsplash 再帰呼び出しを行うために有名なハノイの塔を今日はご紹介いたします。C言語の習得において最難関である再帰呼び出し。本気で再帰を修得したいかたにはハノイの塔というアルゴリズム法が有効です。 ではハノイの塔のルールをお伝えします。まず地面に3本の棒を立てます。そしてそれを左からA,B,Cと呼びます。棒Aには何枚か穴の開いた円盤を重ねておきます。円盤のサイズはそれぞれ異なったものを使い、大きい円盤の上に小さい円盤を乗せます。パズルの内容は、棒Aにある円盤を棒Cにすべて移動させるということが目的です。簡単なように思えますが、これにはルールがあります。ルール1、一つだけ円盤を移動させる。ルール2、小さい円盤の上に大きい円盤は置いてはいけない。ルール3、棒A、棒B、棒C以外の場所に円盤をおいてはいけない。 では再帰理解するコツをご紹介いたします。再帰は処理の流れを追うのが非常に困難です。For文みたいにループが一周するたびに制御変数の変化を考えて、処理を理解する方法をしません。そもそも、再帰の利点は繰り返し処理をスマートに記述することで、人間のおおまかな考えをプログラムに置き換えられるというところです。細かいことを考えてしまうのはナンセンスなんです。再帰を理解するのに必要なことは、イメージをつかむことなのです。途中経過はブラックボックスのままでいいです。どういう処理を繰り返したいのかということを考えればいいのです。 そしてハノイの塔の起源はというと、フランスの数学者エデュアール・リュカが1883年に発売したハノイの塔がルーツです。そしてその内容はこちらです。インドのバラナシにあるガンジス川の岬に、世界の中心を表す巨大な寺院があります。そこには青銅の板の上に、長さが1キュビット、太さが蜂の身体程の三本のダイヤモンドの針が立てられている。そのうちの一本には天地創造の時に神様が64枚の純金の円盤を大きいものから順にさしていった。これがブラフマンの塔である。司祭たちはそこで、昼夜を通して円盤をべつの 棒に差し替えている。そしてすべての円盤の移し替えが終わった時に世界は崩壊し、終わりを迎える。 というものです。IT大国であるインドがベースになった物語です。非常に不思議な物語ですよね。バラナシはガンジス川の下流のある聖なる地で、旅行者はまず訪れるべき地です。 日の出ファウンデーションでもITスクールを2018年4月から開校致します。ご興味のあるかたは是非emailにてお問合せください。

IT用語再帰呼び出しとは? 日の出ITスクール

IT用語再帰呼び出しとは? 日の出ITスクール Photo by Branko Stancevic on Unsplash 今回は再帰定義について説明したいと思います。関数定義の中で関数自身を呼び出すことを、再帰呼び出しや再帰定義と呼びます。関数の定義に自分自身を呼び出すなんてなにか特別な仕掛けがあると思われる方も多いかもしれません。ところが、再帰定義はそこまで特別なことではありません。大昔のプログラミング言語であればありえるかもしれませんが、今この時代にできないプログラミング言語のほうが珍しいぐらいです。もちろんJAVAの関数も、再帰呼び出しが可能です。 それでは再帰定義の基本をご紹介いたします。再帰定義といいますと、LISPのような関数型言語の専売特許だと思われている方もいると思います。実際、C言語などの手続き型言語では、再帰定義が難しいと判断し、初心者の方ですとさけて通っている方も多いように思います。再帰定義は、関数の呼び出しとまったくおなじ理屈なので、警戒する必要はありません。慣れるまで苦労するかとは思いますが、慣れてしまえばこっちのものです。 それでは簡単に例をあげて説明していきたいと思います。皆さん合わせ鏡はご存知ですよね?二枚の鏡(鏡Aと鏡B)を向かい合わせにしたときに、鏡Aの中に鏡B、鏡Bの中に鏡A、鏡Bの中に鏡A、鏡Bの中に鏡Aと永遠に続いていく現象です。それを踏まえて自分自身が書かれえている関数を呼び出すのは再帰呼び出しです。対象が関数ではなく、プログラムの部品だったりするかもしてません。そのあたりはゆるく解釈してください。とにかく、自分自身が書かれている何かを呼び出すことをいいます。 再帰処理はうまく使えるようになるとできるプログラマー気分を味わうことになるとは思いますが、それは罠です。再帰処理を行う際は注意をしてください。再帰処理にはリスクを伴います。その一つが、終了条件が間違っていると永遠に処理が終わらないということ、そして次に、入れ子が深くなると、メモリーが足りなくなるということです。 もしその処理が再帰処理を絶対必要としないものなら、使わないほうが無難かもというのが正直な感想です。また再帰呼び出しになっている関数のことを再帰関数と呼びます。ついでに覚えておくといいと思います。   再帰呼び出しとはざっとこのような感じです。この記事をみてもっとITについて知りたいと思った方は、インドグルガオンにある、日の出ITスクールに是非おいでください。質問等いつでもお待ちしています。その際はemailにてお願い致します。