일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 알고리즘
- ethereum
- DEFI
- Blockchain
- pow
- DPOS
- ios
- PBFT
- 프로그래머스
- 비트코인
- reentrancy
- viewcontroller
- dsYM
- 백준
- 암호화폐
- view 이동
- Algorithm
- .dsym
- POS
- Crash
- Xcode
- solidity
- 재진입공격
- 블록체인
- 이더리움
- 블록체인 기술
- Mining
- Report
- External Call
- 분산원장
Archives
- Today
- Total
개발하기좋은날
fibonacci 본문
반응형
피보나치 수열은 아래와 같은 특징을 가지고있다
- 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1입니다. 그 다음 2번째 피보나치 수부터는 바로 직전의 두 피보나치 수의 합으로 정의합니다.
- 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
- 재귀 형태로 호출시 아래와 같이 트리 구조로 호출이 되면 O(n^2) 형태로 표현이 된다
- 위 그림 처럼 사용시 불필요한 메모리를 차지한다
- 아래 그림처럼 불 필요 한걸 제거한다면 O(N) 형태로 아래와 같이 코드 작성이 가능하다
function _fibonacci(n, memo) {
if ((memo[n] != 0) && (memo[n] != undefined)){ // 기록한거 사용
return memo[n];
}
else // 기록이 없을시 계산후 저장
{
if(n == 1 || n==2){
memo[n] = 1;
}else{
memo[n]= _fibonacci(n-1, memo) + _fibonacci(n-2, memo);
}
return memo[n];
}
}
function fibonacci(n) {
var arr = new Array(n+1);
return _fibonacci(n,arr);
}
반응형
'Algorithm' 카테고리의 다른 글
binarySearch (0) | 2022.06.07 |
---|---|
largestProductOfThree (0) | 2022.06.02 |
treeDFS (0) | 2022.06.02 |
Bubble Sort (0) | 2022.05.25 |
isSubsetOf (0) | 2022.05.24 |
Comments