เราจะมาดูวิธีหาลูกบาศก์รูทของตัวเลขกัน สมมติว่าตัวเลขคือ 27 แล้วลูกบาศก์รูทของตัวเลขนี้คือ 3 เพื่อแก้ปัญหานี้ เราจะกำหนดตรรกะของเราเองโดยไม่ต้องใช้ฟังก์ชันไลบรารี เราจะใช้วิธีการค้นหาแบบไบนารี เราต้องทำตามขั้นตอนเหล่านี้เพื่อแก้ปัญหานี้
สมมติว่าเรามีค่าธรณีประตู เช่น threshold =0.000001
-
เริ่มต้นค่าด้านซ้ายเป็น 0 และค่าด้านขวาเป็นตัวเลข
-
คำนวณกลาง :=(ซ้าย + ขวา)/2
-
หากค่าสัมบูรณ์ของ (ตัวเลข – กลาง 3) น้อยกว่าเกณฑ์ ให้คืนค่ากลางเป็นคำตอบ
-
ถ้า mid3 มากกว่าตัวเลข ให้ตั้งค่า right :=mid
-
ถ้า mid3 น้อยกว่าตัวเลข ให้ตั้งค่า left :=mid
ตัวอย่าง
#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);
} ผลลัพธ์
cube root of 3 is: 1.44225