IMG_1279
所要時間51分。マージソートのアルゴリズムの問題。マージソートは動画を見て知っていたから楽勝だと思ったが意外に手こずった。一口にマージソートと言ってもいろいろなプログラムの仕方があるからだ。

この問題を解くことを通して再帰プログラムの仕組みが理解出来た。あと、大域変数(グローバル変数)と局所変数(ローカル変数)の違いも理解出来た。

再帰プログラムは、同じ変数を繰り返し同じプログラムに入れていく。これはつまり同じ変数名の変数がたくさん発生するのを意味する。これら同名の変数をどうやって区別しているのか、メモリはどうなっているのか、今までちゃんと理解していなかった。

同名の変数たちは、実はそれぞれ別のメモリ領域に入っているので上書きの心配はない。どうして上書きされないかというと、同名の局所変数は再帰の階層ごと違うメモリ領域に格納されるから。同名であっても階層ごとに別扱いされるので上手くいく。

一方で大域変数は、どの副プログラム内でも同一メモリ領域に格納されているものとして扱われ、どの副プログラムからでも上書きされる。

説明していて知識不足を実感する。もっとスパッとしかも正確に説明出来るようになりたい。