public int fibonacci(int num) {
if(num <= 1) return num;
return fibonacci(num-1) + fibonacci(num-2);
}
O(2^N)
메모이제이션
타뷸레이션
메모이제이션/테뷸레이션 : 계산이 필요한 순간 계산해서 저장한다.
public int fibonacci(int num) {
ArrayList<Integer> al = new ArrayList<>();
al.add(0);
al.add(1);
return aux(al, num);
}
public int aux(ArrayList<Integer> memo, int num){ // 재귀
if(memo.size() <= num){ // memo가 존재하지 않는다면
memo.add(aux(memo, num-2) + aux(memo, num-1));
}
return memo.get(num);
}
public int fibonacci(int num) {
ArrayList<Integer> al = new ArrayList<>();
al.add(0);
al.add(1);
for(int i=2; i<=num; i++){
al.add(al.get(i-1) + al.get(i-2));
}
return al.get(num);
}
[참고]
동적 계획법
메모이제이션/타뷸레이션
메모이제이션/타뷸레이션 - 2
https://miiinnn23.tistory.com/1