728x90
반응형
재귀함수는 다시 반복되는 함수
-> 재귀함수를 쓰기 위해선 무한루프에 안빠지도록 설계
즉, 적어도 재귀함수에 빠지지 않는 한 가지의 경우의 수를 존재하도록
- 기본 구조
- 1~n까지의 합
- n!
- X^n
- 피보나치 수열
- 최대 공약수
- 간단한 유클리드 함수
//1. 기본 구조
public static void func(int k){
if (k<=0)
return;
else{
System.out.println("Hello");
func(k-1);
}
}
}
//2. 1~n까지의 합
public static int func(int n) {
if (n==0)
return 0;
else
return n + func(n-1);
}
}
//3. n! (팩토리얼)
public static int factorial(int n)
{
if (n==0)
return 1;
else
return n*factorial (n-1);
}
//4. X^n
public static double power (double x, int n) {
if (n==0)
return 1;
else
return x*power (x, n-1);
}
//5. 피보나치 수열
//f0 =0
//f1 =1
//fn = fn-1 + fn-2 (n>1인 경우)
public int fibonacci (int n) {
if (n<2)
return n;
else
return fibonacci (n-1) + fibonacci (n-2);
}
//6. 최대공약수 [유클리드 함수]
public static double gcd(int m, int n) {
if (m<n) {
int tmp = m;
m=n;
n=tmp;
//swap m and n
}
if (m%n==0)
return n;
else
return gcd(n, m%n);
}
// m>=n인 m,n은
// m이 n의 배수이면 n이며
// 그렇지 않으면, gcd (n, m%n)이다.
//7. 단순 유클리드 함수
// q=0일 때 : p
// 그렇지 않으면 : gcd(q, p%q)
public static int gcd(int p, int q) {
if (q==0)
return p;
else
return gcd(q, p%q);
}
728x90
반응형
'Java > Java 알고리즘' 카테고리의 다른 글
[알고리즘] 1-3. 재귀함수 활용 (0) | 2022.02.28 |
---|---|
[알고리즘] 1-2. 재귀함수 응용 (0) | 2022.02.28 |
[Java 기본 알고리즘] (5) 연결리스트 (0) | 2022.01.06 |
[Java 기본 알고리즘] (6) 큐&스택 (0) | 2022.01.06 |
[Java 기본 알고리즘] (4) 투 포인터 (0) | 2022.01.04 |