58 lines
929 B
C++
58 lines
929 B
C++
#include <iostream>
|
|
#include <cmath>
|
|
|
|
double root(int n)
|
|
{
|
|
double L, R, B;
|
|
L = 0; R = n;
|
|
|
|
while (std::fabs(R - L) > 0.00001)
|
|
{
|
|
B = (L + R) / 2;
|
|
|
|
if ( B*B > n)
|
|
{
|
|
R = B;
|
|
}
|
|
else {
|
|
L = B;
|
|
}
|
|
}
|
|
return B;
|
|
}
|
|
|
|
double root_hf_div(double n, double L, double R)
|
|
{
|
|
double B;
|
|
|
|
if (std::fabs(R - L) < 0.00001)
|
|
{
|
|
return (L + R) / 2;
|
|
}
|
|
else
|
|
{
|
|
B = (L + R) / 2;
|
|
|
|
if ((B * B) > n)
|
|
{
|
|
return root_hf_div(n, L, B);
|
|
}
|
|
else
|
|
{
|
|
return root_hf_div(n, B, R);
|
|
}
|
|
}
|
|
}
|
|
|
|
int main()
|
|
{
|
|
setlocale(LC_ALL, "Russian");
|
|
double n;
|
|
|
|
std::cout << "Введите число n для определения корня: ";
|
|
std::cin >> n;
|
|
|
|
std::cout << "Обычный: " << root(n) << std::endl;
|
|
std::cout << "Рекурсивный: " << root_hf_div(n, 1, n) << std::endl;
|
|
}
|