7. 피보나치 수열

1012 단어

제목 설명


모두들 피보나치 수열을 알고 있습니다. 지금 정수 n을 입력해 주십시오. 피보나치 수열의 n항을 출력해 주십시오. (0부터, 0항은 0).n<=39
해법1: 귀속을 사용하지만 귀속은 새로운 방법의 창고를 열 수 있기 때문에 시간과 공간 비용이 순환보다 크고 심각한 문제가 있다. 즉, 창고가 넘쳐나는 것이다.
public class Solution {
    public int Fibonacci(int n) {
        if(n <= 0)
            return 0;
        if(n == 1)
            return 1;
        
        return Fibonacci(n - 1) + Fibonacci(n - 2);
    }
}

실행 시간: 1287ms 사용 메모리: 9572k
해법2: 해법1의 나쁜 점은 중복된 호출 횟수가 너무 많기 때문에 중복된 계산을 없애려면 우리는 이미 얻은 결과를 저장하여 다음 계산에 사용할 수 있다.
public class Solution {
    public int Fibonacci(int n) {
        int result = 0;
        int preFirst = 1;
        int preLast = 0;
        
        if(n == 0) return 0;
        if(n == 1) return 1;
        
        for(int i = 2; i <= n; i ++){
            result = preFirst + preLast;
            preLast = preFirst;
            preFirst = result;
        }
        return result;
    }
}

실행 시간: 19ms 사용 메모리: 9380k

좋은 웹페이지 즐겨찾기