[자바기초] 5. 함수

메소드(=함수 =function)

정의 : 함수를 만드는 것 / call = invoke : 함수 호출

public static void main(String[ ] args) { }

public static void main(String[] args) {  // main메소드는 프로그램의 시작이자 끝
	System.out.println("프로그램의 시작");
	hiEveryone(12); // 함수 호출 , 함수 실행 , '12'라는 값(value)할당
	hiEveryone(13);
	System.out.println("프로그램의 끝");
	}
	
public static void hiEveryone(int age) {  // 매개변수 자리에 int age 변수선언 , 함수만든것
	System.out.println("좋은 아침입니다");
	System.out.println("제 나이는 " + age + "세 입니다");
}

/* 값들이 한번 실행되고(호출한번하고) 나면  안에  사라짐 
그래서 호출할때  여러개(hiEveryone(12); hiEveryone(13);) 호출가능!!	
======================================================================
 
프로그램의 시작
좋은 아침입니다
 나이는 12 입니다
좋은 아침입니다
 나이는 13 입니다
프로그램의 

public static double square(double width, double height) {

double squareArea = width*height;
System.out.println(squareArea);
return squareArea; // return값은 함수의 데이터타입과 일치해야함 ```

함수를 써야하는 이유와 언제 쓰는지에 대한 궁금증


재귀함수

  1. 함수 안에서 함수를 호출한다 (함수안에서 함수 자신을 호출)
  2. 재귀함수는 모든 언어에서 지원되는건 아니다 (JAVA는 지원함)
  3. 재귀함수로 풀리는 문제들은 대부분 재귀함수를 쓰지않아도 풀리기 때문에 사용빈도 ↓ ```java // 재귀함수의 대표적인 EX) factorial : n! = n * (n-1)!

public static int factorial(int n) { if(n ==1) return 1; //반드시 종료조건 있어야함! 조건 없으면 무한루프 돎 else return n * factorial(n-1);

* ex_재귀함수로 2ⁿ 구하기
```java
public static int powerOfTwo(int n) {
	if(n == 0) { 
    return 1;
  }
	
	else {
    return 2 * powerOfTwo(n-1);
  }


지역변수 : 함수( )안에 있는 변수

  1. 변수의 선언은 어디서나 가능 (위치상관없이)
    변수의 적용범위(스코프)는 { 중괄호 } ; { 중괄호 }를 벗어나면 변수범위 적용X
  2. 같은 영역내에 있는 변수는 동일한 이름을 사용할 수 없다
    why? 헷갈리니까
    public static void main(String[]args) { 
    
     int num;
     {
         int num = 10; // 위에 num 과 영역이 겹침 따라서 error!
         System.out.println(num);
     } // { 중괄호 }를 따로 써서 거의 쓰진 않지만 문법적으로는 허용이된다
    }