여기서 Xn은 말 그래도 근사값이다.
S에 루트를 씌운 값에 가장 가까울거라 생각하는 근사값을 넣어주면 된다.
어떤 값을 넣든지 점화식을 반복하면 결국, Xn+1 이 S의 제곱근에 근접하는 순간이 온다.
let 근사값 = 원래숫자 / 2
while((근사값**2) !== 원래숫자){
근사값 = (근사값 + (원래숫자/근사값))/2
}
시간초과 문제 발생. 근사값이 3.xxxxxxxxxx형식을 넘지 못함
let origin = 9;
let approxNum = origin / 2; // 4.5
while((approxNum**2) !== origin){
approxNum = (approxNum + (origin/approxNum))/2;//3.25
}
제곱근이 정수로 떨어지는 숫자 이외의 값을 입력받으면 while문이 무한반복. break 필요
그 조건은 소수점 자리를 지정해 그 값을 끊어 계산
해결방안 approx.toFixed(소수점자리수)
let origin = 9;
let approxNum = origin / 2;
while((approxNum**2) !== origin){
if(Number((approxNum**2).toFixed(2))===origin){
break;
}
approxNum = (approxNum + (origin/approxNum))/2;
}
return (approxNum**2).toFixed(2);