재귀함수 호출이란 ?
- 해당 메소드 실행영역에서 해당 메서드를 다시 호출하는 것이다.
- 해당 메서드가 무한 호출되므로 탈출 조건이 반드시 포함 되어야 한다.
- 알고리즘이나 자료구조론에서 중요한 개념 => 복잡한 문제를 간단하게 처리 가능하다.
package methodex;
public class FactorialEx {
public static void main(String[] args) {
int n = 5;
int rs1 = factorialFor(n);
System.out.println(rs1);
rs1 = factorialRecursive(n);
System.out.println(rs1);
}
static int factorialRecursive(int n) {
int rs=0;
if(n==0 || n==1) rs = 1;
else if (n>0) {
rs = n* factorialRecursive(n-1);
}
return rs;
}
static int factorialFor(int n){
int rs = 1;
for(int i=n; i>0; i--) {
rs= rs*i;
}
return rs;
}
}
결과값 :

피보나치수열
- 첫번째 및 두번째 항이 1이며 그 뒤의 모든 항은 바로 앞 두항의 합인 수열
- n의 값을 1부터 넣어보면 값의 패턴이 보임
- ex) 1, 1, 2, 3, 5, 8, 13, 21, 34 ...
package methodex;
public class PibonachiEx {
static int pivonachiRecursive(int n) {
int rs = 0;
if(n == 1 || n == 2) {
rs = 1;
}else if(n >= 3){
rs = pivonachiRecursive(n-1) + pivonachiRecursive(n-2);
}
return rs;
}
public static void main(String[] args) {
// n값을 담아서 보내기 때문에 피보나치 수열의 결과가 달라진다.
int n = 8;
int rs = pivonachiRecursive(n);
System.out.println(rs);
}
}