今日の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呼び出しはあっているくせに、何でこんなことをしているのやら……。