あれ? 初期計算なんかおかしなことやってるな・・・ def sqrt(x) if x<=0 then return 0 return sqrtb(x,0,max(1,x)) end だけでよかった。