자바스크립트에서 제곱근 구하기 (바빌로니아 법)
자바스크립트 코어 함수인 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 ));
어떻게 이런 발상을 하는건지 수알못은 이해못해 웁니다 ㅠㅠ
열심히 공부해야겠다!
최근 댓글