728x90
๋ฐ์ํ
์ฌ๊ท (Recurssion)
ํจ์ ๋ด๋ถ์์ ์ง์ ํน์ ๊ฐ์ ์ ์ผ๋ก ์๊ธฐ ์์ ์ ํธ์ถ
- Base Part : ์ฌ๊ท๋ฅผ ๋๋๋ ์กฐ๊ฑด์ ์ง๋ ํํธ
- 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 ๊ตฌํ (1) | 2022.05.18 |
|---|---|
| 1์ฐจ์ ๋ฐฐ์ด (1) | 2022.05.18 |
| Tree (0) | 2022.05.18 |
| List (0) | 2022.05.18 |
| QUEUE (0) | 2022.05.18 |