CS/알고리즘
재귀함수와 반복문의 차이점
amungstudy
2023. 10. 19. 11:28
피보나치 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12945
피보나치 문제를 푸는 경우 재귀함수를 이용하거나 반복문을 이용해서 해결할 수 있다.
- 피보나치
class Solution {
static int[] memo;
public int solution(int n) {
memo = new int[n+1];
int answer = fibo(n);
return answer;
}
public int fibo(int n){
if(n==0){
return 0;
}
if(n==1){
return 1;
}
// 메모이제이션 작업(피보나치 이전 결과를 배열에 저장)
if(memo[n]!=0){
return memo[n];
}
memo[n]=(fibo(n-2)+fibo(n-1))%1234567;
return memo[n];
}
}
반복문
class Solution { public int solution(int n) { if(n <= 1) return n; int answer = 0; int n1 = 0; int n2 = 1; for(int i=2; i<=n; i++){ answer = (n1 + n2) % 1234567; n1 = n2; n2 = answer; } return answer; } }
반복문이 속도는 더 빠르지만
재귀함수를 이용하면 변수 사용을 줄인다 + 가독성을 향상시킨다