피보나치 수 (Level 1)

문제

피보나치 수는 F(0) = 0, F(1) = 1일 때, 2 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 점화식입니다.

2 이상의 n이 입력되었을 때, fibonacci 함수를 제작하여 n번째 피보나치 수를 반환해 주세요. 예를 들어 n = 3이라면 2를 반환해주면 됩니다.

풀이

function fibonacci(num) {
  let arr = [0,1];
  for (let i = 2; i <= num; i++ ) {
      arr.push(arr[i-1]+arr[i-2])
  }
  return arr[num]
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log(fibonacci(4))

재귀 함수로 풀어보려 했으나 시간초과로 다른 방법으로 접근

내가 푼 방법이 Dynamic Programming이 맞는지 모르겠지만 따라하려 해봄ㅋㅋ

배열에 fibonacci(0), fibonacci(1)을 할당해놓고 다음 순서를 push로 배열뒤에 삽입하는 식으로 연산에서 중복되는 결과를 최대한 줄이려 함

다른 사람의 풀이

function fibonacci(num) {
  if(num < 2) return num;

  return fibonacci(num-1) + fibonacci(num-2);
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log(fibonacci(3))
console.log(fibonacci(10))

나는 이렇게 쓰면 통과 안되던데 어떻게 되는거지..

아무튼 위에서 말한 재귀함수로 구현한 방법이 이것!

+ Recent posts