본문 바로가기

분류 전체보기

(268)
함수) 재귀함수, 팩토리얼을 이용한 이해2 package class04; import java.util.Scanner; public class Test07_2 { static int fac(int n) { if (n == 0) { // 만약에 n의 값이 0이 된다면 1의 값을 출력해라. return 1; } return (n * fac(n - 1)); // 계속해서 fac(n-1)의 값을 찾기 때문에 계속 -1씩 됨 } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("양의 정수를 입력"); int n = sc.nextInt(); System.out.println(fac(n)); } }
함수) 재귀함수, 팩토리얼을 이용한 이해 package class04; // [함수 심화] : 재귀 // 재귀함수(순환함수) : 주어였던게 목적어이기도 할때 ex) 팩토리얼 // 4!:4x3!=23 / N!=N*(N-1)! / f(n)=n*f(n-1) // 만약 이해가 안된다면 함수 초반부분 복습하기 public class Test07 { static int fac(int n) { System.out.println(n); if (n == 1) { return 1;// 1*0이 아니라 그냥1임 , 종료조건 } return n * fac(n - 1); // return에 포함되있는 fac(n-1)에 대한걸 모르니까 계속해서 n*fac(n-1)을 반복하다 보니 메모리 부족.. // 재귀함수도 "종료조건"이 필요함! } public static voi..
함수) output O / input O인 함수 package class03; public class Test06 { // output O input O //void는 반환값이 없을 때 사용 // 함수명이 같은 오버로딩~ static int func4(int a, int b) { int res = ++a + b; return res; } static int fun4(int a, int b, int c) { return a + b + c; } public static void main(String[] args) { int a = 10; int b = 20; System.out.println(func4(a, b)); System.out.println("a= " + a); System.out.println("b= " + b); } } // 함수는 선언-> ..
함수) output O / input X 인 함수2 package class03; public class Test05_2 { static int fun3() { return 123; // 자기자신을 호출한 위치로 "값"을 반환+함수를 종료 } static int f1() { int num = 123; return num; } static int f2() { int num = 10; return num; // return은 함수를 즉시 종료 } public static void main(String[] args) { int num = 1; num = f1(); System.out.println("num= " + num); System.out.println(f2()); } }
함수) output O / input X 인 함수 package class03; public class Test05 { // output O input X static int func3() { return 10; // 자기자신을 호출한 위치로 값을 반환+ 함수를 종료 } public static void main(String[] args) { int num = func3(); // 대입 연산자를 수행하기 위해선 먼저 // 1.fun3()의 값을 알아야한다.== fun3()를 먼저 수행한다는 뜻. // 2. 대입 연산자를 수행 System.out.println("num= " + num); System.out.println(func3()); } }
함수명 중복정의 허용과 오버로딩 package class01; public class Test04 { // "함수명 중복정의 허용" // : 인자의 개수가 다르거나, // : 인자의 자료형이 달라야만한다. // ★★★오버로딩 ==함수형 재사용 static void add(int i, String s) { } // static void add(int j, int k) { // xx 변수명이 달라도 인자의 자료형이 다르거나 개수가 달라야함으로 이름이 다르고 해서 되는게 아님 static void add(int a, int b) { System.out.println(a + b); } static void add2(int a, int b, int c) { System.out.println(a + b + c); } static void add3..
함수 메모리 개념 package class01; public class Test03 { static void func1() { int num = 10; num++; System.out.println("func1(): " + num); } // 수행이 끝나면 메모리 공간 해제가 된다는 점을 잘 생각하기. static void func2(int a) { a++; func1(); System.out.println("func2(): " + a); } public static void main(String[] args) { int num = 1; int a = 100; func1(); func2(num); } }
함수) input X / output X인 함수 package class01; public class Test02 { // input x , output x 인 함수를 만들어보자. static void func1() { // 함수는 코드 재사용성을 증가시키기 위해 쓴다..!! System.out.println("소리가 들린다!"); System.out.println("주의! 경고!"); } // input O output X static void func2(int num) { // for문 처럼 // 호출했을 때의 값을 사용하기 때문에 System.out.println("func2()에서 받은 num" + num); num += 10; System.out.println(num); // 실제 변수안에선 +10이 되지만 main을 수행하고 난 뒤 메모리 ..