반응형
자바 함수 예제 (팩토리얼, 피보나치, 재귀호출)
글. 오상문 sualchi@daum.net
public class Main {
public static void main(String[] args) {
System.out.println(max(1, 2)); // 사용자 정의 함수 이용
System.out.println(Math.max(1, 2)); // Math 라이브러리 함수 이용
}
// 사용자 정의 함수 : 두 정수 중에서 큰 정수를 돌려줌
static int max(int a, int b) { // static 함수로 만들어야 바로 사용 가능
return (a>b) ? a:b; // 3항 조건 연산자
}
}
[실행 결과]
2
2
// 팩토리얼 함수 예제
package Factorial;
public class Main {
static int f1(int n) { // 반복문 이용
int f=1;
for(int i=2; i<=n; i++)
f *= i;
return f;
}
static int f2(int n) { // 재귀호출 이용
if(n<=1)
return 1;
return n*f2(n-1);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(f1(10));
System.out.println(f2(10));
}
}
[실행결과]
3628800
3628800
// 피보나치 수열 함수 예제
public class Main {
static int fibonacci1(int n) { // 반복문 이용
int a=1, b=1;
if(n<1)
return -1;
for(int i=2; i<n; i++) {
b += a;
a = b-a;
}
return b;
}
static int fibonacci2(int n) { // 재귀호출 이용
if(n<1)
return -1;
if(n<=2)
return 1;
return fibonacci2(n-1) + fibonacci2(n-2);
}
static int[] dp = new int[41];
// Math.random()*100 <-- 0 <= r < 100
static int fibonacci3(int n) {
if(n<1 || n>40) // 범위 벗어나면 에러 처리
return -1;
if(n<=2)
return 1;
if(dp[n] != -1)
return dp[n];
return fibonacci3(n-1) + fibonacci3(n-2);
}
public static void main(String[] args) {
for(int i=0; i<41; i++)
dp[i] = -1;
System.out.println(fibonacci1(-1));
System.out.println(fibonacci2(-1));
System.out.println(fibonacci3(-1));
System.out.println(fibonacci1(1));
System.out.println(fibonacci2(1));
System.out.println(fibonacci3(1));
System.out.println(fibonacci1(10)); // 55
System.out.println(fibonacci2(10));
System.out.println(fibonacci3(10));
System.out.println(fibonacci1(40)); // 102334155
System.out.println(fibonacci2(40));
System.out.println(fibonacci3(40));
}
}
[실행결과]
-1
-1
-1
1
1
1
55
55
55
102334155
102334155
102334155
반응형
'JAVA' 카테고리의 다른 글
자바 스트링 문자열 예제 2 (0) | 2020.11.23 |
---|---|
자바 스트링 문자열 예제 (0) | 2020.11.19 |
자바 키보드, 파일 입력 예제 (0) | 2020.11.19 |
자바 1차원, 2차원 배열 예제 (0) | 2020.11.19 |
자바 기본 자료형 예제 (0) | 2020.11.19 |