반응형

자바 함수 예제 (팩토리얼,  피보나치,  재귀호출)

 

글. 오상문 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

+ Recent posts