코플릿/toyproblem

toy problem 02

테오구 2021. 10. 20. 01:52
728x90

fibonacci

문제

아래와 같이 정의된 피보나치 수열 중 n번째 항의 수를 리턴해야 합니다.

  • 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1입니다. 그 다음 2번째 피보나치 수부터는 바로 직전의 두 피보나치 수의 합으로 정의합니다.
  • 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...

문제의 접근

피보나치 수: 피보나치 수(영어: Fibonacci numbers)는 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열이다. 처음 여섯 항은 각각 1, 1, 2, 3, 5, 8이다. 편의상 0번째 항을 0으로 두기도 한다.

 

 

더보기
function fibonacci(n) {
  // TODO: 여기에 코드를 작성합니다.
  // fib(3) = fib(2) + fib(1)
  // fib(4) = fib(3) + fib(2) 
  
  // dynamic with meoization: O(N)
// 이미 해결한 문제의 정답을 따로 기록해두고,
// 다시 해결하지 않는 기법
// fibo(10)
// = fibo(9) + fibo(8)
// = fibo(8) + fibo(7) + fibo(7) + fibo(6)
// 여기까지만 보아도 동일한 문제가 중복으로 계산되는 것을 알 수 있다.
  let arr=[0,1];

  function fib(n){
    if(arr[n] !== undefined){
      return arr[n]
    }
    arr[n] = fib(n-1)+fib(n-2);
    return arr[n]
  }
  return fib(n)
}
728x90

'코플릿 > toyproblem' 카테고리의 다른 글

toy problem 14  (0) 2021.10.26
toy problem 04  (0) 2021.10.21
toy problem 03  (0) 2021.10.20
toy problem 01  (0) 2021.10.20
toy problem 09  (0) 2021.10.19