재귀호출 함수에는 위처럼 무한 반복을 멈추게 하는 조건문을 가진 Base case와,
Base case에 수렴할 때까지 반복되는 행동이 있는 Recursive case로 나뉜다.
예제 1. 팩토리얼 (Factorial)
위 사진처럼 공식화(?) 해두고 프로그래밍하면 좋은 것 같다.
예제 2. X의 n승 (X^n)
예제 3. 피보나치 수열 (Fibonacci)
코드
import java.util.Scanner;
public class example {
public static int fibonacci(int n) {
if(n<2) return n;
else {
return fibonacci(n-1) + fibonacci(n-2);
}
}
public static void main(String[] args) {
System.out.println(fibonacci(4));
}
}
예제 4. 최대공약수 (Euclid Method)
코드
import java.util.Scanner;
public class example {
public static int 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);
}
public static void main(String[] args) {
System.out.println(gcd(2, 6));
System.out.println(gcd(2, 7));
}
}
예제 5. 최대공약수 단순ver
코드
import java.util.Scanner;
public class example {
public static int gcd(int p, int q) {
if(q==0) return p;
else return gcd(q, p%q);
}
public static void main(String[] args) {
System.out.println(gcd(2, 6));
System.out.println(gcd(2, 7));
}
}
'Algorithm > Inflearn' 카테고리의 다른 글
[Inflearn] 영리한 프로그래밍을 위한 알고리즘 - 순환 (Recursion) 의 개념과 기본 예제 2 (0) | 2022.11.09 |
---|---|
[Inflearn] 자바 알고리즘 문제풀이 #02-04 4. 피보나치 수열 (0) | 2022.11.09 |
[Inflearn] 자바 알고리즘 문제풀이 #02-03 3. 가위 바위 보 (0) | 2022.11.08 |
[Inflearn] 자바 알고리즘 문제풀이 #02-02 2. 보이는 학생 (0) | 2022.11.07 |
[Inflearn] 자바 알고리즘 문제풀이 #02-01 1. 큰 수 출력하기 (0) | 2022.11.07 |