8월 25일 (수) 재귀흐름(3)

남이섬·2021년 8월 25일
0
post-custom-banner
function isOdd(num) {
//base case
  if (num === 1) {
    return true
  }
//base case
  if (num === 2 || num === 0) {
    return false
  }
//recursive case
  if (num < 0) {
    return isOdd(-num)
  }
//recursive case
  return isOdd(num - 2)
}

isOdd(9)

  if (num === 1) {
    return true
  }
  if (num === 2 || num === 0) {
    return false
  }

base case 모두 충족 되지않아 재귀 함수 진행

  return isOdd(num - 2)

num = 9
9 => 7 => 5 => 3 => 1

num = 1

function isOdd(1) {
  if (num === 1) {
    return true
  }

isOdd(1) = true;

num = 3

function isOdd(3) {
  if (num === 1) {
    return true
  }
  if (num === 2 || num === 0) {
    return false
  }
  if (num < 0) {
    return isOdd(-num)
  }
  return isOdd(3 - 2)
       //isOdd(1)
       //true
}

isOdd(3) = true;

num = 5

function isOdd(5) {
  if (num === 1) {
    return true
  }
  if (num === 2 || num === 0) {
    return false
  }
  if (num < 0) {
    return isOdd(-num)
  }
  return isOdd(5 - 2)
      // isOdd(3)
      // true
}

isOdd(5) = true

num = 7

function isOdd(7) {
  if (num === 1) {
    return true
  }
  if (num === 2 || num === 0) {
    return false
  }
  if (num < 0) {
    return isOdd(-num)
  }
  return isOdd(7 - 2)
      // isOdd(5)
      // true
}

isOdd(7) = true

num = 9

function isOdd(9) {
  if (num === 1) {
    return true
  }
  if (num === 2 || num === 0) {
    return false
  }
  if (num < 0) {
    return isOdd(-num)
  }
  return isOdd(9 - 2)
      // isOdd(7)
      // true
}

isOdd(9) = true

return value = true;

isOdd(-9)
0보다 작을때 조건문 재귀함수 적용

  if (-9 < 0) {
    return isOdd(-(-9))
  }

위와 같이 재귀함수가 적용되며

마지막에 재귀를통한 return value를 갖이고

  if (num < 0) {
    return isOdd(-num)
  }

여기서 탈출 한다

function isOdd(9) {
  if (num === 1) {
    return true
  }
  if (num === 2 || num === 0) {
    return false
  }
  if (num < 0) {
    return isOdd(-num)
  }
  return isOdd(9 - 2)
      // isOdd(7)
      // true
}

isOdd(9) = true

  if (num < 0) {
    return isOdd(-9)
        // isOdd(-9)에서 isOdd의 true값을 가지고 탈출한다
  }

isOdd(-9) = true

profile
즐겁게 살자
post-custom-banner

0개의 댓글