>>592
current_x, current_y, depth:
 探索を一歩進めるごとに変化していき、再帰呼び出しから戻ってきた時
 には復元されて欲しい値。再帰探索関数の引数としてスタックに
 保持することで、その両者が自然に実現できる。
min_depth:
 探索を進めたり戻ったりする毎に変化する値ではなく、単調に変化して
 いく値なので、再帰関数のスタックではない場所に保持しておく必要が
 ある。ポインタを用いて引数渡しすることも可能だが、ここでは
 簡便のためグローバル変数となっている。
state
 探索の対象。実は値の変化に関してはcurrent_x, current_y, depthに
 似た特性を持っているが、Cでは配列の値渡しが出来ないので、スタッ
 クを利用してバックトラックを自動的に実現することは出来ない。
 ここでは簡便のためグローバル変数となっている。
goal_x, goal_y
 ゴールの判別は座標ではなくマップの値によってなされており、使われ
 ていない。