본문 바로가기
개발/알고리즘 기초공부

Recursion - 순환함수(재귀함수) (1)

by 잡다백과사전 2021. 3. 1.
반응형

2021/03/01 - [개발/알고리즘 기초공부] - Recurtion - 순환함수(재귀함수) (2)

2021/03/02 - [개발/알고리즘 기초공부] - Recursion - 순환함수(재귀함수) (3)

2021/03/02 - [개발/알고리즘 기초공부] - Recursion - 미로찾기

2021/03/04 - [개발/알고리즘 기초공부] - Recursion - Blob 셀 카운트

자기 자신을 호출하는 함수

  - base case : 적어도 하나의 recursion에 빠지지 않는 경우가 존재해야 한다.

  - recursive case : recursion을 반복하다보면 결국 base case로 수렴해야 한다.

 

public class Recurtion {
    public static void main(String[] args) throws Exception {
        System.out.println(func(10));
        System.out.println(power(3, 10));
        System.out.println(fibonacci(10));
        System.out.println(gcd(30, 12));

    }

    public static int func ( int n ) {
        if (n==0) return 0;
        else return n + func (n -1 );
    }

    public static double power(double x, int n){
        if ( n == 0) return 1;
        else return x*power(x, n-1);
    }

    public static int fibonacci (int n){
        if (n<=2) return n;
        else return fibonacci(n-1)+fibonacci(n-2);
    }

    //최대공약수 유클리드호제법
    //m>=nd 인 두 양의 정수 m과 n에 대하여 m이 n의 배수이면 gcd(m, n)=n이고,
    //그렇지 않으면 gcd(m,n)=gcd(n, m%n)이다.
    public static double gcd(int m, int n){
        if (m<n) {
            int tmp=m; m=n; n=tmp;
        }
         if (m%n == 0) return n;
         else return gcd(n, m%n);
    }
}
반응형