Tìm căn bậc ba của số. Ví dụ 27 → 3. Không dùng hàm thư viện, dùng tìm kiếm nhị phân.
Bước: ngưỡng threshold = 0.000001. left=0, right=số. mid=(left+right)/2. Nếu |số - mid³| < threshold → trả về mid. Nếu mid³ > số → right=mid. Nếu mid³ < số → left=mid.
Ví dụ mã nguồn
#include <iostream>
#include <cmath>
using namespace std;
double cubeRoot(int num) {
double threshold = 0.000001;
double left = 0, right = num;
double mid;
while (left <= right) {
mid = (left + right) / 2;
if (abs(num - (mid*mid*mid)) < threshold)
return mid;
if ((mid*mid*mid) > num)
right = mid;
if ((mid*mid*mid) < num)
left = mid;
}
}
int main() {
int n = 3;
cout << "cube root of 3 is: " << cubeRoot(n);
}
Kết quả đầu ra
cube root of 3 is: 1.44225