멍하
돌아온 자바공부 3일차입니다.
9강 & 10강 사용자 정의 함수
https://youtu.be/YwSsMH8GX2A?si=RY4Os-BkDO-Hdihe
//사용자 정의 함수 선언 기본 형식
//반환형 함수명 매개변수
public static int function(int num)
{
//본문
return 정수형 리턴 값
}
public static void main(String[] args) {
funtion(매개변수);
}
최대공약수 구하기
public class Main {
public static int function(int a, int b, int c) {
int min;
if(a > b)
{
if(b > c)
{
min = c;
}
else
{
min = b;
}
}
else
{
if(a > c)
{
min = c;
}
else
{
min = a;
}
}
for(int i = min; i > 0; i--)
{
if(a % i == 0&& b % i == 0 && c % i == 0)
{
return i;
}
}
return -1;
}
public static void main(String[] args) {
System.out.println("400, 300, 750의 최대공약수 : " + function(400, 300, 750));
}
}
약수 중 k번째 작은 수 찾기
public class Main {
public static int function(int number, int k) {
for(int i = 1; i <= number; i++)
{
if(number % i == 0)
{
k--;
if(k == 0){
return i;
}
}
}
return -1;
}
public static void main(String[] args) {
int result = function(3050, 10);
if(result == -1)
{
System.out.println("3050의 10번째 약수는 없습니다.");
}
else {
{
System.out.println("3050dml 10번째 약수는 "+ result + "입니다.");
}
}
}
}
문자열에서 마지막 단어 반환하기
public class Main {
public static char function(String input) {
return input.charAt((input.length()-1));
}
public static void main(String[] args) {
System.out.println("Hello World의 마지막 단어는 "+function("Hello World"));
}
}
최대값을 출력하기
public class Main {
public static int max(int a, int b) {
return(a > b) ? a : b;
}
public static int function(int a, int b, int c) {
int result = max(a, b);
result = max(result, c);
return result;
}
public static void main(String[] args) {
System.out.println("345, 567, 789 중에서 가장 큰 값은 "+function(345, 567, 789));
}
}
11강 & 12강 반복함수와 재귀함수
https://youtu.be/Mga1rElzrVo?si=D9P6SAbl6QJzTdai
- 반복 함수 : while 혹은 for을 사용하여 반복적으로 문제 해결
- 재귀 함수 : 함수에서 자신을 호출하여 재귀적으로 문제 해결 // 시간복잡도 유의
팩토리얼
//팩토리얼 반복
public class Main {
public static int factorial(int number) {
int sum = 1;
for(int i = 2; i <= number; i++)
{
sum *= i;
}
return sum;
}
public static void main(String[] args) {
System.out.println("10 팩토리얼은 "+factorial(10));
}
}
//팩토리얼 재귀
public class Main {
public static int factorial(int number) {
if(number == 1)
return 1;
else {
return number * factorial(number - 1);
}
}
public static void main(String[] args) {
System.out.println("10 팩토리얼은 "+factorial(10));
}
}
피보나치 수열
//피보나치 수열 - 반복
public class Main {
public static int fibonacci(int number) {
int one = 1;
int two = 1;
int result = -1;
if(number == 1)
{
return one;
}
else if(number == 2)
{
return two;
}
else {
{
for(int i = 2; i < number; i++)
{
result = one + two;
one = two;
two = result;
}
}
}
return result;
}
public static void main(String[] args) {
System.out.println("피보나치 수열의 5번째 원소는 "+fibonacci(5));
}
}
//피보나치 수열 - 재귀
public class Main {
public static int fibonacci(int number) {
if(number == 1)
{
return 1;
}
else if(number == 2)
{
return 1;
}
else {
return fibonacci(number - 1) + fibonacci(number - 2);
}
}
public static void main(String[] args) {
System.out.println("피보나치 수열의 5번째 원소는 "+fibonacci(5));
}
}
재귀를 사용할 경우에는 시간복잡도에 유의해야함!
'JAVA' 카테고리의 다른 글
[JAVA] 추상 클래스(abstract class) (0) | 2023.09.15 |
---|---|
[JAVA] 배열, 다차원 배열, 클래스, 상속 (0) | 2023.09.14 |
[JAVA] 생성자 (Constructor) (0) | 2023.09.14 |
[JAVA] 변수, 사칙 연산, 자료형, 조건문, 반복문, 입출력 (0) | 2023.09.06 |
[JAVA]자바 & 이클립스 설치 | Hello World 출력 (0) | 2023.09.05 |