-
1.6 블록과 어휘 범위scala/functional programming 2024. 4. 4. 19:58
예제: 뉴턴의 방법 의 코드 문제는 너무 많은 function 이 있다는 점이다. sqrt() function 안으로 관련 코드를 넣고, 기존에 중복으로 사용된 x 값을 조정하면 아래처럼 개선할 수 있다.
def abs(x: Double): Double = if x > 0 then x else -x def sqrt(x: Double): Double = { def isGoodEnough(guess: Double): Boolean = abs(guess * guess - x) < 0.001 def improve(guess: Double): Double = (guess + x / guess) / 2 def sqrtIter(guess: Double): Double = if isGoodEnough(guess) then guess else sqrtIter(improve(guess)) sqrtIter(1.0) } @main def Main(): Unit = { println(sqrt(2)) }
'scala > functional programming' 카테고리의 다른 글
1.7 꼬리 재귀 (0) 2024.04.04 1.5 예제: 뉴턴의 방법을 사용한 제곱근 (0) 2024.04.04 1.4 조건과 값 정의 (0) 2024.04.04 1.3 평가 전략 및 종료 (0) 2024.04.04 1.2 프로그래밍의 요소 (0) 2024.04.04