자바스크립트에서 제곱근 구하기 (바빌로니아 법)

자바스크립트 코어 함수인 Math.sqrt()를 사용해도 됩니다.

하지만 알고리즘이 어떻게 이루어졌는지 궁금해져서 소스를 뒤져보다

깃허브에 공개된 것을 하나 발견하여 내용을 정리하여 포스팅 합니다!

 

function sqrt(number, guess) {
    // 최초 수행 시 할당되는 초기 추측값
    if ( !guess ) {
        guess = number / 2.0;
    }
    // 추측 값을 입력받은 수로 나눈다.
    var divide = number / guess;
    // 나눈 값과 추측값의 평균 값을 새 추측값으로 저장한다.
    var newGuess = ( divide + guess ) / 2.0;
    // 만약 이전 추측값이 새 추측값과 같다면
    // 더 이상 정밀한 값을 구할 수 없음을 의미한다.
    // 이런 경우 현재 저장된 최종 추측값을 돌려준다.
    if ( guess == newGuess) {
        return guess;
    }
    // guess가 리턴되기 전 까지
    // 클로저와 재귀를 통해 새로운 컨텍스트에서 계속 계산을 수행한다.
    return sqrt(number, newGuess);
}
//콘솔 출력
console.log(sqrt( 2 ));

 

 

어떻게 이런 발상을 하는건지 수알못은 이해못해 웁니다 ㅠㅠ

열심히 공부해야겠다!

 

 

출처 https://gist.github.com/joelpt/3824024

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.