본문 바로가기

프로그래밍/Scala

HW 1. Exercise 1-2 보충

저번에 대충 짜둔게 있긴한데 stackoverflow가 떠서 ^__^;;

반타작만 할 순 없으므로 일단 할 수 있을 때까지 해봄

가 보 자 고

 

 

다시 올리는 문제

/**
   * Exercise 1-2: fold
   *
   * Calculate f(a, f(a + 1, f(a + 2, ... f(b - 1, b))))  `(0 <= a, b <= 10^6)`
   *
   * when a >= b, return 0
   *
   * We guarantee that any (f, a, b) in the test set will not raise integer overflow.
   */
  def fold(f: (Long, Long) => Long, a: Long, b: Long): Long = ???

 

 

다시 생각해낸 solution

 

def fold(f: (Long, Long) => Long, a: Long, b: Long): Long = {

  def putting(a: Long, b: Long, f: (Long, Long) => Long, res: Long = b):Long = {
    if (a == b) res
    else {
      val new_res = f(b - 1, res)
      putting(a, b - 1, f, new_res)
    }
  }

  if (a >= b) 0
  else putting(a, b, f)
}

def sub(a:Long, b:Long):Long = a-b

fold(sub,5L,1000000L)
//val res0: Long = -499998
//(fold(sub, 5L, 1000000L) == -499998L)

 

 

나 머임.....

왜 새벽에 집중 잘함.....

 

 

풀어버려따 꺄ㅑ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'프로그래밍 > Scala' 카테고리의 다른 글

Currying & Closure 완전 이해하기  (0) 2022.10.21
PART 1 - Currying (0926)  (0) 2022.10.20
Tail Recursion 추가 포스팅  (1) 2022.10.02
HW 1. Exercise 3  (0) 2022.10.02
Recursion / Tail Recursion  (0) 2022.10.01