๐Ÿ““ STUDY/JAVA

์žฌ๊ท€

JuneBee 2022. 5. 18. 11:03
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
๋ฐ˜์‘ํ˜•