Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ฟังก์ชันสแควร์รูทโดยไม่ต้องใช้ Math.sqrt() ใน JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน 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));

ทำความเข้าใจโค้ด

เราวนซ้ำจาก i =1 หาก i * i =n เราคืนค่า i เนื่องจาก n เป็นกำลังสองสมบูรณ์ที่มีรากที่สองคือ I มิฉะนั้น เราจะพบว่า i ที่เล็กที่สุดซึ่ง i * i มากกว่า n พี>

ตอนนี้เรารู้แล้วว่ารากที่สองของ n อยู่ในช่วง i – 1 และ i

จากนั้นเราใช้อัลกอริทึม Binary Search เพื่อค้นหาสแควร์รูท

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

5.744562149047852