• ์žฌ๊ท€

    2022. 5. 18.

    by. JuneBee

    728x90
    ๋ฐ˜์‘ํ˜•

    ์žฌ๊ท€ (Recurssion)

    ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์ง์ ‘ ํ˜น์€ ๊ฐ„์ ‘์ ์œผ๋กœ ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœ

    1. Base Part : ์žฌ๊ท€๋ฅผ ๋๋‚˜๋Š” ์กฐ๊ฑด์„ ์ง€๋‹Œ ํŒŒํŠธ
    2. Inductive Par : ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ํŒŒํŠธ

    ์žฌ๊ท€์˜ ํ˜ธ์ถœ์€ ํ”„๋กœ๊ทธ๋žจ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์—์„œ ์Šคํƒ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ˜๋ณต์ ์ธ ํ˜ธ์ถœ์€ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์†๋„์˜ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์•ผ๊ธฐํ•œ๋‹ค.

    ์˜ˆ์ œ

    ํŒฉํ† ๋ฆฌ์–ผ

    int factorial(int n){
    if (n==1 || 0) return 1;
    else
    return n*factorial(n-1);
    }

    Permutation

    public class PermutationTest {
    static int N =3, R =4;
    static int[] numbers;
    static int[] input;
    static boolean[] isSelected;
    public static void main(String[] args) {
    input = new int[] {1,4,7,8};
    numbers = new int[R];
    isSelected = new boolean[N+1];
    permutation(0);
    }
    private static void permutation(int cnt) {
    //cnt == ๋ชฉํ‘œ
    if(cnt ==R ) {
    System.out.println(Arrays.toString(numbers));
    return;
    }
    for(int i=1; i<=N;i++) {
    if(isSelected[i]) {continue;} //์‚ฌ์šฉ์ค‘์ธ์ˆ˜๋ฉด ๋‹ค์Œ์ˆ˜๋กœ
    numbers[cnt] =i;
    isSelected[i] =true;
    permutation(cnt+1);
    isSelected[i] = false;
    }
    }
    }

    Combination

    public class Combination {
    public static void main(String[] ar){
    Combination ex = new Combination();
    int[] arr = { 1, 2, 3 };
    int n = arr.length;
    int r = 2;
    int[] combArr = new int[n];
    combination(combArr, n, r, 0, 0, arr);
    }
    public static void combination(int[] combArr, int n, int r, int index, int target, int[] arr){
    System.out.println("=> "+n+" "+r+" "+index+" "+target);
    if(r == 0){
    System.out.println(Arrays.toString(combArr));
    for(int i=0; i<index; i++)System.out.print(arr[combArr[i]] + " ");
    System.out.println();
    }else if(target == n){
    return;
    }else{
    combArr[index] = target;
    // (i) ๋ฝ‘๋Š” ๊ฒฝ์šฐ : r-1 , index +1
    combination(combArr, n, r-1, index+1, target+1, arr);
    // ์•ˆ ๋ฝ‘๋Š”๊ฒฝ์šฐ -> r๊ณผ index ๊ทธ๋Œ€๋กœ
    combination(combArr, n, r, index, target+1, arr);
    }
    }
    }
    728x90
    ๋ฐ˜์‘ํ˜•

    '๐Ÿ““ STUDY > JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    LinkedList ๋ฅผ ์ด์šฉํ•ด์„œ Stack ๊ตฌํ˜„  (0) 2022.05.18
    1์ฐจ์› ๋ฐฐ์—ด  (0) 2022.05.18
    Tree  (0) 2022.05.18
    List  (0) 2022.05.18
    QUEUE  (0) 2022.05.18

    ๋Œ“๊ธ€