본문 바로가기

나를 성장시키는 알고리즘

재귀의 정리

상황


재귀를 쓰는 이유는 이 함수의 반복이 언제 끝날지 모른다는 것이 핵심이다. 그래서 이 함수의 반복을 통해 데이터를 확인하면서!!(

slice, 인자값을 줄이기 등)어떤 결과를 도출하되 그 끝나는 지점을 알려줘야 한다. 

 

 

들어온 수의 함수 더하기 

function sumTo(num) {
  // TODO: 여기에 코드를 작성합니다.
  // 별도의 최적화 기법(memoization)은 금지됩니다.

  //재귀의 핵심은 끝날 때까지 계속 이 함수를 진행하는거야
  if(num=== 0){
    return 0
  }
  if(num <=1){
    return 1
  }else{
    return num+sumTo(num-1)
  }
}

홀수인지 찾기 :홀수 찾을 때까지 함수를 사용 

function isOdd(num) {
  // TODO: 여기에 코드를 작성합니다.

  //2씩 줄이는데 최종 숫자가 0이면 짝수 1이면 홀수를 리턴

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

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

  return isOdd(num-2)
  
}

팩토리얼

 

function factorial(num) {
  // TODO: 여기에 코드를 작성합니다.
  // 별도의 최적화 기법(memoization)은 금지됩니다.
  //곱이 끝날 때까지 해야 return 보내지

  if(num <= 1){
    return 1
  }else{
    return num *factorial(num-1)
  }

}

 

 

피보나치

 

function fibonacci(num) {
  // TODO: 여기에 코드를 작성합니다.
  // 별도의 최적화 기법(memoization)은 금지됩니다.
  //상황이 num을 받지만 피보나치를 이용해서 풀어야 함 지금 알 수 있는 숫자는 
  if(num <=1 ){
    return num
  }else{
    return fibonacci(num-1)+fibonacci(num-2)
  }

}

 

배열의 합 구하기 (배열의 길이가 0이 될때까지 i가 하나씩 늘어나느 것처럼 배열의 길이를 줄여 함수를 반복한다. )

function arrSum(arr) {
  // TODO: 여기에 코드를 작성합니다.
  if(arr.length === 0){
    return 0
  }else{
    return arr[0]+arrSum(arr.slice(1))
  }

}