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 |