본문 바로가기

알고리즘

어떠한 수를 입력받으면 해당 숫자의 제곱근 값을 소수점 2자리로 반환

-Math.sqrt()사용 안함

function computeSquareRoot(num) {

 // TODO: 여기에 코드를 작성합니다.

 

 // 바빌로니아 점화법 -> xn = (xn-1 + num/xn-1) / 2

 // 초기값 xn-1은 아무거나, num은 제곱근을 구해야하는 수

 // toFixed(2) : 소수점 2번째 자리까지

 

 let initValue = 1; // 초기값

 // 임의의 제곱근의 제곱값이 num과 같지 않을 경우 반복, 같을 경우 종료

 while(Math.pow(initValue,2)!==num) {

   // 만약 구한 제곱근 값의 제곱(소수 둘째 자리)이 num(제곱근을 구해야 하는 값)과 값은 경우 break;

   if( Number((initValue*initValue).toFixed(2)) === num )  break;

 

   initValue = (initValue + num/initValue) / 2 ; // 바빌로니아 점화법으로 구한 제곱근 유사값

 }

 

 // toFixed() 메서드는 문자열을 반환하기 때문에 Number()로 변환

 return Number(initValue.toFixed(2));

}