立方根の計算
Posted feedbacks - C++
gcc version 3.4.2 (mingw-special)で動作確認しました。 終了条件のチェックはこれでいいのかな?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <cmath>
long double cube_root(long double x, long double min = 0.0, long double max = 1000.0)
{
long double mid = (min + max) / 2.0;
if((mid == min) || (mid == max))
return mid;
return ((std::pow(mid, 3) - x) > 0) ? cube_root(x, min, mid) : cube_root(x, mid, max);
}
/*
#include <cstdlib>
#include <iomanip>
#include <iostream>
int main(int argc, char * argv[])
{
long double x = std::atof(argv[1]);
std::cout << std::setprecision(15) << cube_root(x) << std::endl;
return EXIT_SUCCESS;
}
*/
|



にしお
#3411()
Rating1/1=1.00
ただし、このお題の趣旨は実数区間での探索なので、 立方根関数があっても使ってはいけません。 指数関数と対数関数も禁止します。
Pythonで表現した入出力の例:
[ reply ]