Ở đây chúng ta sẽ xem cách lấy căn bậc hai của một số. Giả sử một số là 27, thì căn bậc ba của số này là 3. Để giải quyết vấn đề này, chúng ta sẽ xác định logic của riêng mình mà không sử dụng một số hàm thư viện. Chúng tôi sẽ sử dụng phương pháp tìm kiếm nhị phân. Chúng tôi phải làm theo các bước sau để giải quyết vấn đề này.
Giả sử chúng ta có giá trị ngưỡng như ngưỡng =0,000001
-
Bắt đầu giá trị bên trái là 0 và giá trị bên phải là số
-
tính toán giữa:=(trái + phải) / 2
-
nếu giá trị tuyệt đối của (number - mid3) nhỏ hơn ngưỡng, thì trả về mid dưới dạng câu trả lời
-
nếu mid3 lớn hơn number, thì hãy đặt right:=mid
-
nếu giữa 3 nhỏ hơn số, thì đặt bên trái:=mid
Ví dụ
#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); }
Đầu ra
cube root of 3 is: 1.44225