เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับตัวเลขและคำนวณรากที่สองโดยไม่ต้องใช้ฟังก์ชัน Math.sqrt()
ตัวอย่าง
ต่อไปนี้เป็นรหัส -
const square = (n, i, j) => { let mid = (i + j) / 2; let mul = mid * mid; if ((mul === n) || (Math.abs(mul - n) < 0.00001)){ return mid; }else if (mul < n){ return square(n, mid, j); }else{ return square(n, i, mid); } } // Function to find the square root of n const findSqrt = num => { let i = 1; const found = false; while (!found){ // If n is a perfect square if (i * i === num){ return i; }else if (i * i > num){ let res = square(num, i - 1, i); return res; }; i++; } } console.log(findSqrt(33));
ผลลัพธ์
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ในคอนโซล -
5.744562149047852
ทำความเข้าใจโค้ด
เราวนซ้ำจาก i =1
ถ้า i * i =n เราคืนค่า i เนื่องจาก n เป็นกำลังสองสมบูรณ์ที่มีรากที่สองคือ i มิฉะนั้นเราจะพบว่า i ที่เล็กที่สุดซึ่ง i * i มากกว่า n เท่านั้น
ตอนนี้เรารู้แล้วว่ารากที่สองของ n อยู่ในช่วง i – 1 และ i จากนั้นเราใช้อัลกอริทึม Binary Search เพื่อค้นหาสแควร์รูท