今日のTA

 今日のプログラミング演習2で「無限ループで動かないんですけど」と質問してきた学生のユニークな間違い。問題は、atanというtanθの逆関数を使って、極座標から角度を求める問題。

 atanは数学関数math.hから使えばいいわけだが、質問してきた学生は何故か自分で定義。


double atan(double x,double y)

 なる関数を定義していた。(ぉ
 しかし、内部ではatanを呼び出している。つまり、

double atan(double x,double y){
 double PI;
 PI=atan(x,y);
 return PI;
}

 
 と、まあ、こんな感じに呼び出していた。
 一瞬、「ラッピング?(←関数を関数で覆い隠すこと)何でわざわざこんな回りくどいことを……」と思ったのだが、よくよく考えてみれば、atanの中でatanを呼び出しているので、再帰呼び出しになっている罠(ぉ
 
 まあ、そりゃ無限ループもするわな。
 
 しかし、atan内部のatan呼び出しはあっているくせに、何でこんなことをしているのやら……。