본문 바로가기

CS/알고리즘

재귀함수와 반복문의 차이점

피보나치 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12945

피보나치 문제를 푸는 경우 재귀함수를 이용하거나 반복문을 이용해서 해결할 수 있다.

  1. 피보나치
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];
    }
}
  1. 반복문

    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;
    }
    }

반복문이 속도는 더 빠르지만
재귀함수를 이용하면 변수 사용을 줄인다 + 가독성을 향상시킨다

'CS > 알고리즘' 카테고리의 다른 글

하노이의 탑  (0) 2023.10.27
시간 계산하기(손코딩)  (0) 2023.10.20
소수 구하기  (0) 2023.10.03
중앙값 구하기  (0) 2023.09.20
알고리즘 스터디 문제 1,2(기수변환)  (0) 2023.09.15